微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Heroku celery worker 崩溃

如何解决Heroku celery worker 崩溃

我使用以下方法编写了电子邮件自动化应用:

Django==2.2.19,django-celery-beat==2.2.0,redis==3.5.3

期望的结果是设置特定的 cron 计划并根据它发送电子邮件。当我有本地 redis 服务器、本地 celery worker 和本地 django 应用程序时,一切正常。在应用程序中,我正在使用要运行的特定 crontab 和电子邮件任务创建 PriodicTask 对象。 Localy App 也可以使用 Herokuredis

我在 procfile 中设置了 worker

release: python3 manage.py migrate
web: gunicorn auto_emails.wsgi --preload --log-file -
worker: celery -A auto_emails worker --beat --scheduler django --loglevel=info

当我在 heroku ps 之后部署时我得到

=== web (Free): gunicorn auto_emails.wsgi --preload --log-file - (1)
web.1: up 2021/05/14 12:02:39 +0200 (~ 4m ago)

=== worker (Free): celery -A auto_emails worker --beat --scheduler django --loglevel=info (1)
worker.1: crashed 2021/05/14 12:03:26 +0200 (~ 3m ago)

我知道我不应该在生产过程中同时运行 beats 和 worker,但我只想使用一个 Dyno,而且我正在运行 hobby dev,它只允许 2 个免费进程 dynos。

下面是我的heroku日志--tail

2021-05-14T10:03:25.960792+00:00 app[worker.1]: Traceback (most recent call last):
2021-05-14T10:03:25.960840+00:00 app[worker.1]: File "/app/.heroku/python/bin/celery",line 8,in <module>
2021-05-14T10:03:25.963458+00:00 app[worker.1]: sys.exit(main())
2021-05-14T10:03:25.963491+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/celery/__main__.py",line 15,in main
2021-05-14T10:03:25.987830+00:00 app[worker.1]: sys.exit(_main())
2021-05-14T10:03:25.989404+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/celery/bin/celery.py",line 213,in main
2021-05-14T10:03:25.992335+00:00 app[worker.1]: return celery(auto_envvar_prefix="CELERY")
2021-05-14T10:03:25.992369+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/click/core.py",line 829,in __call__
2021-05-14T10:03:25.996017+00:00 app[worker.1]: return self.main(*args,**kwargs)
2021-05-14T10:03:25.996054+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/click/core.py",line 782,in main
2021-05-14T10:03:25.997387+00:00 app[worker.1]: rv = self.invoke(ctx)
2021-05-14T10:03:25.997417+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/click/core.py",line 1259,in invoke
2021-05-14T10:03:25.998490+00:00 app[worker.1]: return _process_result(sub_ctx.command.invoke(sub_ctx))
2021-05-14T10:03:25.998517+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/click/core.py",line 1066,in invoke
2021-05-14T10:03:26.008392+00:00 app[worker.1]: return ctx.invoke(self.callback,**ctx.params)
2021-05-14T10:03:26.008588+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/click/core.py",line 610,in invoke
2021-05-14T10:03:26.009189+00:00 app[worker.1]: return callback(*args,**kwargs)
2021-05-14T10:03:26.009214+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/click/decorators.py",line 21,in new_func
2021-05-14T10:03:26.009389+00:00 app[worker.1]: return f(get_current_context(),*args,**kwargs)
2021-05-14T10:03:26.009412+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/celery/bin/base.py",line 132,in caller
2021-05-14T10:03:26.009618+00:00 app[worker.1]: return f(ctx,**kwargs)
2021-05-14T10:03:26.009642+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/celery/bin/worker.py",line 320,in worker
2021-05-14T10:03:26.009930+00:00 app[worker.1]: worker = app.Worker(
2021-05-14T10:03:26.013521+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/celery/worker/worker.py",line 99,in __init__
2021-05-14T10:03:26.013899+00:00 app[worker.1]: self.setup_instance(**self.prepare_args(**kwargs))
2021-05-14T10:03:26.013922+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/celery/worker/worker.py",line 120,in setup_instance
2021-05-14T10:03:26.014135+00:00 app[worker.1]: self._conninfo = self.app.connection_for_read()
2021-05-14T10:03:26.014158+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/celery/app/base.py",line 769,in connection_for_read
2021-05-14T10:03:26.015031+00:00 app[worker.1]: return self._connection(url or self.conf.broker_read_url,**kwargs)
2021-05-14T10:03:26.015057+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/celery/app/base.py",line 828,in _connection
2021-05-14T10:03:26.015815+00:00 app[worker.1]: return self.amqp.Connection(
2021-05-14T10:03:26.015839+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/kombu/connection.py",line 168,in __init__
2021-05-14T10:03:26.016061+00:00 app[worker.1]: alt.extend(hostname)
2021-05-14T10:03:26.016085+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/redis/client.py",line 1616,in __getitem__
2021-05-14T10:03:26.022323+00:00 app[worker.1]: raise KeyError(name)
2021-05-14T10:03:26.023390+00:00 app[worker.1]: KeyError: 0
2021-05-14T10:03:26.496385+00:00 heroku[worker.1]: Process exited with status 1
2021-05-14T10:03:26.665528+00:00 heroku[worker.1]: State changed from up to crashed

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。