[英]How to handle MySQL failover within celery
當我的MySQL后端在Celery中關閉時,我正在嘗試實施故障轉移策略。
我在另一個堆棧溢出答案中發現,SQLAlchemy使得故障轉移成為可能。 但是,我無法使用sqlalchmey_engine_options
在Celery中編寫相同的行為
__app.conf.result_backend = 'db+mysql://scott:tiger@localhost/foo'
__app.conf.sqlalchmey_engine_options = {
'connect_args': {
'failover': [{
'user': 'root',
'password': 'password',
'host': 'http://other_db.com',
'database': 'dbname'
}]
}
}
我想做的是,如果第一個后端scott:tiger
沒有響應,那么它將切換到root:password
后端。
肯定有不止一種實現故障轉移的方法。 您可以從簡單的try..except開始,並在您首選的后端沒有響應時處理情況,可以以最簡單的方式(可能不是很pythonic)嘗試如下操作:
try:
# initialise your SQL here and also set the connection up
except:
# initialise your backup SQL here
您還可以將后端選擇移至基礎結構,以便從您的應用程序角度來看是透明的,即通過使用會話池系統(我不是MySQL用戶,但在PostgreSQL世界中我們有pgpool )。
-編輯-
我意識到您可能希望由celery自己處理數據庫會話和連接。 因此,以上很可能無法直接回答您的問題,在我的簡單項目中,我在需要連接的任務中初始化數據庫連接,因為在我的特殊情況下,大多數任務根本不需要數據庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.