我在 Fedora 机器上运行 Celeryd/RabbitMQ,与 MySQL 通信 数据库在一个单独的盒子上。我注意到,在极少数情况下,如果 连接到 MySQL 数据库时甚至出现最轻微的问题 (即使是几秒钟),celeryd 会因错误而崩溃:
OperationalError: (2003, "Can't connect to MySQL server on
'mydatabasedomain' (111)")
即使数据库再次可用,也无法重新连接。
目前,我不得不手动重启celeryd服务来获取 celery 再次运行。有没有更优雅和自动的方式 从这些类型的事件中恢复? celery 有什么特点吗 只是安静地等待,记录 OperationalError,然后重新连接 完全退出?
最佳答案
我不知道有什么方法可以通过简单地使用配置标志来解决这个问题,但您可以考虑使用主管(s. http://supervisord.org)来运行您的工作人员。
celery 文档 (http://celery.readthedocs.org/en/latest/tutorials/daemonizing.html#supervisord) 中甚至提到了这一点,包括一些示例配置文件的链接。
关于python - 从数据库中断中恢复 Celery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8538938/