gpt4 book ai didi

python - 如何在 celery 中处理 MySQL 故障转移

转载 作者:行者123 更新时间:2023-11-30 21:47:40 25 4
gpt4 key购买 nike

当我的 MySQL 后端在 Celery 中出现故障时,我正在尝试实现故障转移策略。

我在 this other stack overflow answer 中找到在 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

您还可以将您的后端选择移至基础架构,以便从您的应用程序角度来看它是透明的,即通过使用 session 池系统(我不是 MySQL 用户,但在 PostgreSQL 世界中我们有 pgpool)。

--- 编辑---

我意识到您可能希望让 celery 本身处理您的数据库 session 和连接。所以上面很可能没有直接回答你的问题,在我的简单项目中,我在需要它的任务中初始化数据库连接,因为在我的特定情况下,大多数任务根本不需要数据库。

关于python - 如何在 celery 中处理 MySQL 故障转移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48691413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com