【发布时间】:2011-09-23 13:51:34
【问题描述】:
我开始为 Django 项目使用 Celery。出于本地开发目的,我已经根据这些指令http://ask.github.com/celery/tutorials/otherqueues.html#django-database 使用 djcelery 和 djkombu(数据库传输)进行了设置,但计划在生产服务器上使用 rabbitmq。
我发现它有效,但一名或多名工人会随机挂起。工作人员挂在不同的任务上,因此不是一个特定任务进入无限循环的情况。当我尝试关闭 celery 时,在日志中我通常会看到所有工作人员都退出,除了一个。在工作人员挂起之前和之后,我都尝试使用 celeryctl 来获取有关工作人员的信息,但 celeryctl 总是失败并显示消息“错误:在时间限制内没有节点回复。 “。我也试过检查工人http://docs.celeryproject.org/en/latest/userguide/workers.html#inspecting-workers,但所有方法都没有返回任何东西。
关于如何诊断导致工人挂起或会有所帮助的任何想法。
【问题讨论】:
-
首先在 shell 上运行 celery,调试级别为 celeryd -l DEBUG。当您重新启动 celery 或停止它时,正在执行任务的 Poolworker 在任务完成之前不会重新启动,这是正常行为。您的任务被随机阻止是不正常的。 Rabbit MQ 从来没有发生在我身上,这可能与数据库锁或连接有关。你使用的是 MYSQL InnoDB 吗? Aniway 我强烈建议使用经纪人而不是 db transport
-
你运行的是什么版本?
标签: celery django-celery