python - 从数据库中断中恢复 Celery

标签 python rabbitmq celery

我在 Fedora 机器上运行 Celeryd/RabbitMQ,与 MySQL 通信 数据库在一个单独的盒子上。我注意到,在极少数情况下,如果 连接到 MySQL 数据库时甚至出现最轻微的问题 (即使是几秒钟),celeryd 会因错误而崩溃:

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

即使数据库再次可用,也无法重新连接。

目前,我不得不手动重启celeryd服务来获取 celery 再次运行。有没有更优雅和自动的方式 从这些类型的事件中恢复? celery 有什么特点吗 只是安静地等待,记录 OperationalError,然后重新连接 完全退出?

最佳答案

我不知道有什么方法可以通过简单地使用配置标志来解决这个问题,但您可以考虑使用主管(s. http://supervisord.org)来运行您的工作人员。

celery 文档 (http://celery.readthedocs.org/en/latest/tutorials/daemonizing.html#supervisord) 中甚至提到了这一点,包括一些示例配置文件的链接。

关于python - 从数据库中断中恢复 Celery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8538938/

相关文章:

python - 对未知公式的数据集进行曲线拟合 (SciPy)

python - 启动 Docker 容器时自动运行 Python 脚本

python - 什么是 pm.Normal.dist.logp?

.net - RabbitMQ DotNet 客户端不连接到 SSL

nginx - 找不到 RabbitMQ WebSocket 404

python - 对无响应的 Flask 路由的调用设置超时(更新)

python - Celery:异步检索上一个任务的部分结果

python - 为什么在 web2py 上打印 CSS 效果和 double 值?

django - 由于errno 104, celery 操作不佳

python - 为 `ClassTask` mixin 子类化 Celery Task