我开始了我的芹菜工队队列(在后台):
celery worker -Q my_queue -l info
此后,其经纪人(redis
)停止了,同时后台celery worker
在增加时间后继续尝试重新连接到redis。
现在我的目标是在重新启动redis后重新启动非重复 my_queue
。我意识到以下celery API在重新连接之前不会返回my_queue
:
celery.task.control.inspect().active_queues()
现在,如果我开始新的my_queue
,如果之后重新连接之前的my_queue
,我最终会重复celery worker
。
解决方案可能是让celery worker
在发现其代理被停止时主动退出,但我找不到正确的方法来执行此操作。我也不想通过之前保存的PID来杀死它。任何建议或替代方案将不胜感激。
答案 0 :(得分:0)
嗯,我知道这与我的要求相矛盾,但似乎我确实需要PID文件的帮助:
celery worker -Q my_queue -l info --pidfile=pid.log
如果pid.log中保存的pid已经运行,将引发异常。
这仍然不是理想的解决方案,任何有关如何让celery worker
在发现其经纪人停止时主动退出的建议仍然会受到赞赏。