从我所看到的,似乎芹菜工人停止了,它应该能够在重新开始时从队列中消耗。
为了测试这个,我开了3台虚拟机,每台机器有2名芹菜工人。我正在使用芹菜守护进程。一台机器有客户端脚本,一台机器充当代理,尽管它们都运行着rabbitmq。
当我启动客户端脚本时,我的所有工作人员都在获取任务(从我可以告诉的日志中)。为了测试失败后会发生什么,我发出
service celeryd stop
到我的一台机器上。一分钟后,我发出
service celeryd start
一分钟前我停在那台机器上。但是,在发出此命令后,我的客户端脚本冻结并停止,上述计算机上的工作人员再也无法接收任务。
知道发生了什么事吗?我猜测芹菜工人在被关闭之前做的最后一项任务可能是某种干扰?
仅供参考:我在客户端脚本中收到结果后会删除临时队列,但我不认为这会影响上述问题。
答案 0 :(得分:1)
是的,你是对的。启动关闭后,工作人员将在实际终止之前完成所有当前正在执行的任务[请参阅 [celery document]。
您最好先查看相应工作程序的日志,以确保它确实是根本问题。
顺便说一句,您可以使用flower来监控芹菜。