簡體   English   中英

如何在celery中處理MySQL故障轉移

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM