2011-12-16 76 views
8

我有一个Fedora的机器上运行Celeryd/RabbitMQ的,与一个单独的盒子一个MySQL数据库 沟通。我注意到,在极少数情况下,如果 甚至还有连接到MySQL数据库 (甚至几秒钟)丝毫问题,celeryd将与错误崩溃:恢复芹菜从数据库中断

OperationalError: (2003, "Can't connect to MySQL server on 
'mydatabasedomain' (111)") 

和失败,甚至重新连接当数据库再次可用时。

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

+1

什么是使用MySQL?是否您正在使用连接到MySQL DB的SQLAlchemy代理? – brechin 2013-08-01 17:57:34

回答

0

我不知道任何方式通过简单地使用配置标志来解决这个问题,但你可以考虑使用监督员运行你的工人(S。http://supervisord.org)。

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

+0

同样的问题在这里。芹菜不提供解决方案?外部守护进程是唯一已知的选项?在我的例子中,我有两个运行Python应用程序+ Celery + RabbitMQ的框,使用SQLAlchemy连接到同一个Google Cloud SQL数据库。最终,我在其中一台机器上遇到了一个SQL OperationalError`(2013,'在查询期间丢失了与MySQL服务器的连接')``。尽管处理了异常,但是芹菜工作进程在两台机器中关闭,没有芹菜日志记录。只有RabbitMQ记录突然关闭的连接 – alecdotico 2014-06-11 09:46:44