2011-12-16 96 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