Celery 工作人员未重新连接到网络 change/IP 更改

Celery worker not reconnecting on network change/IP Change

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

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

问题

不幸的是,我忘了咨询我的网络人员有关固定 IP 地址的问题,而且根据我们所在的位置,我们的 ISP 没有固定 IP 地址。所以我的芹菜工人在网络断开时冻结并且什么都不做。即使网络为 运行,因为 IP 地址已更改,并且未重新创建与代理的连接或工作人员未重试连接。我试过 BROKER_CONNECTION_MAX_RETRIES = 0BROKER_HEARTBEAT = 10 这样的配置。但我别无选择,只能post 把它拿出来,请教这方面的专家!

PS:每次网络更改 IP 地址 kill -9

时,我无法手动重启 worker

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

sudo rabbitmqctl stop_app
sudo rabbitmqctl start_app

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

这个问题是因为我无法理解 AMQP 协议或 RabbitMQ 的本质。

当 celery worker 启动时,它会在 RabbitMQ 上打开一个通道。此频道在任何网络更改时都会尝试重新连接,但之前为该频道打开的 port/sock 已使用客户端的不同 public IP 地址注册。因此,celery worker(客户端)和 RabbitMQ(服务器)之间的协商无法恢复,因为客户端已更改地址,因此需要建立一个新通道,以防 public IP 地址发生变化客户。

以上@qreOct的回答是因为我没能正确表达问题,或者是因为我们的看法不同。仍然非常感谢您抽出宝贵时间!