celery multi 在heroku上崩溃

Posted

技术标签:

【中文标题】celery multi 在heroku上崩溃【英文标题】:celery multi crashes on heroku 【发布时间】:2014-08-29 10:33:41 【问题描述】:

我已经为 heroku 部署了一个 django 应用程序,它使用 celery 来执行长时间运行的任务。出于性能原因(时间和内存),我生成了两个具有不同并发设置的工作人员并路由任务。它在我的本地环境中运行良好,但工作人员在 heroku 上立即崩溃。

2014-07-08T15:24:11.300344+00:00 heroku[worker.1]: Starting process with command `python manage.py celery multi start single multi -c:multi 8 -c:single 1 -Q:single single -Q:multi multi --loglevel=INFO`
2014-07-08T15:24:11.944619+00:00 heroku[worker.1]: State changed from starting to up
2014-07-08T15:24:13.386256+00:00 app[worker.1]: celery multi v3.1.8 (Cipater)
2014-07-08T15:24:13.386418+00:00 app[worker.1]: > Starting nodes...
2014-07-08T15:24:13.807448+00:00 app[worker.1]:     > single@f5bd1193-6b06-4822-8bea-6c45640d66c7: OK
2014-07-08T15:24:14.318063+00:00 app[worker.1]:     > multi@f5bd1193-6b06-4822-8bea-6c45640d66c7: OK
2014-07-08T15:24:16.242842+00:00 heroku[worker.1]: Process exited with status 0
2014-07-08T15:24:16.258695+00:00 heroku[worker.1]: State changed from up to crashed
2014-07-08T15:24:16.259282+00:00 heroku[worker.1]: State changed from crashed to starting
2014-07-08T15:24:27.430541+00:00 heroku[worker.1]: State changed from starting to up
2014-07-08T15:24:28.621064+00:00 app[worker.1]: celery multi v3.1.8 (Cipater)
2014-07-08T15:24:28.621229+00:00 app[worker.1]: > Starting nodes...
2014-07-08T15:24:29.103659+00:00 app[worker.1]:     > single@deb6a436-1ab7-4310-9a97-f137ad9bf682: OK
2014-07-08T15:24:29.667462+00:00 app[worker.1]:     > multi@deb6a436-1ab7-4310-9a97-f137ad9bf682: OK
2014-07-08T15:24:30.948397+00:00 heroku[worker.1]: State changed from up to crashed
2014-07-08T15:24:26.827871+00:00 heroku[worker.1]: Starting process with command `python manage.py celery multi start single multi -c:multi 8 -c:single 1 -Q:single single -Q:multi multi --loglevel=INFO`
2014-07-08T15:24:30.938523+00:00 heroku[worker.1]: Process exited with status 0

这就是我可以从日志中得到的全部信息...我是否需要对 heroku 进行一些特殊设置,或者 celery multi 是否不能在单个测功机上工作(不再)?我向谷歌提供了最明显的关键字,但没有看到答案。

非常感谢任何帮助或提示!

【问题讨论】:

【参考方案1】:

Celery Multi 将节点作为守护进程启动,然后立即退出。进程监视器看到退出代码并认为程序已崩溃,因此它重新启动测功机。

请参阅此帖子以了解解决方法: https://groups.google.com/forum/#!topic/celery-users/FDIrKPHv33s

【讨论】:

以上是关于celery multi 在heroku上崩溃的主要内容,如果未能解决你的问题,请参考以下文章

Heroku/Celery:一名工人同时执行任务?

在 heroku 上运行 celery 的最佳实践

在 Heroku 上挂载 Celery 时出现“[Errno 111] Connection denied”错误

在 Heroku 上运行的 Celery beat 进程发送任务两次

Heroku + Celery - 拒绝连接

Heroku celery 后台任务