我为一些需要在工作场所执行的任务部署了 celery。这些任务是巨大的,我买了一些高规范的机器来执行这些任务。在我详细说明我的问题之前,让我简要介绍一下我已经部署的所有内容:
- 远程服务器上的 RabbitMQ 代理
- 将任务推送到另一台远程服务器的生产者
- 在我的工作场所部署了 3 台机器的 worker
现在,当我开始时,整个过程和我测试的一样顺利,一切都很好!
问题
不幸的是,我忘了咨询我的网络人员有关固定 IP 地址的问题,而且根据我们所在的位置,我们的 ISP 没有固定 IP 地址。所以我的 celery worker 在网络断开时卡住并且什么都不做。即使网络正在运行,因为 IP 地址已更改,并且不会重新创建与 broker 的连接或 worker 不会重试连接。我尝试过像 BROKER_CONNECTION_MAX_RETRIES = 0
和 BROKER_HEARTBEAT = 10
这样的配置。但是我没办法,只好贴出来,求高人指点!
PS:每次网络通过 kill -9
最佳答案
使用以下方式重新启动应用:
sudo rabbitmqctl stop_app
sudo rabbitmqctl start_app
帮我解决了这个问题。 另外,由于我有虚拟主机设置,我也需要进行重置。 不确定为什么需要这样做。或者实际上需要以上任何一项,但它确实为我解决了问题。
关于python - Celery worker 未在网络更改/IP 更改时重新连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39462847/