从数据库中断中恢复芹菜

Cer*_*rin 8 python rabbitmq celery

我在Fedora盒子上运行Celeryd/RabbitMQ,在一个单独的盒子上与MySQL数据库通信.我注意到,在极少数情况下,如果连接到MySQL数据库时甚至出现最轻微的问题(即使是几秒钟),celeryd也会因错误而崩溃:

OperationalError: (2003, "Can't connect to MySQL server on
'mydatabasedomain' (111)")
Run Code Online (Sandbox Code Playgroud)

即使数据库再次可用,也无法重新连接.

目前,我被迫手动重启celeryd服务,让芹菜再次运行.是否有更优雅和自动的方式从这些类型的事件中恢复?是否有任何celeryd的功能只是静静等待,记录OperationalError,并重新连接而不是完全退出?

Jan*_*ann 0

我不知道有什么方法可以通过简单地使用配置标志来解决这个问题,但是您可以考虑使用主管(s.http: //supervisord.org)运行您的工作人员。

这甚至在 celery 文档(http://celery.readthedocs.org/en/latest/tutorials/daemonizing.html#supervisord)中提到,包括一些示例配置文件的链接。