python - Celery worker 未在网络更改/IP 更改时重新连接

标签 python python-2.7 rabbitmq celery celery-task

我为一些需要在工作场所执行的任务部署了 celery。这些任务是巨大的,我买了一些高规范的机器来执行这些任务。在我详细说明我的问题之前,让我简要介绍一下我已经部署的所有内容:

  • 远程服务器上的 RabbitMQ 代理
  • 将任务推送到另一台远程服务器的生产者
  • 在我的工作场所部署了 3 台机器的 worker

现在,当我开始时,整个过程和我测试的一样顺利,一切都很好!

问题

不幸的是,我忘了咨询我的网络人员有关固定 IP 地址的问题,而且根据我们所在的位置,我们的 ISP 没有固定 IP 地址。所以我的 celery worker 在网络断开时卡住并且什么都不做。即使网络正在运行,因为 IP 地址已更改,并且不会重新创建与 broker 的连接或 worker 不会重试连接。我尝试过像 BROKER_CONNECTION_MAX_RETRIES = 0BROKER_HEARTBEAT = 10 这样的配置。但是我没办法,只好贴出来,求高人指点!

PS:每次网络通过 kill -9

更改 IP 地址时,我无法手动重启工作人员

最佳答案

使用以下方式重新启动应用:

sudo rabbitmqctl stop_app
sudo rabbitmqctl start_app

帮我解决了这个问题。 另外,由于我有虚拟主机设置,我也需要进行重置。 不确定为什么需要这样做。或者实际上需要以上任何一项,但它确实为我解决了问题。

关于python - Celery worker 未在网络更改/IP 更改时重新连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39462847/

相关文章:

queue - 用于分布式事件限制的只读队列?

python - Django 谷歌应用程序引擎错误

Django Webfaction 'Timeout when reading response headers from daemon process'

python - (Python 3) imaplib 从 .txt 文件登录

python - 如何在python中替换多个字符串?

python - 如何在 60 分钟的时间间隔内随机分配 100 个 API 调用?

go - 使用 channel.Get() 而不是 channel.Consume() 有缺点吗?

php - 如何使用 php 在 RabbitMQ 中检索相同的消息两次或更多次

python - pyqt4:如何查看QWebPage?

python - 在没有 json 库的情况下在 python 中解析 JSON 对象(仅使用正则表达式)