Python 芹菜工作者在网络更改/IP更改时未重新连接
我为一些需要在工作场所执行的任务部署了芹菜。这些任务是巨大的,我买了一些高规格的机器来执行这些任务。在详细说明我的问题之前,让我先简要介绍一下我所部署的:Python 芹菜工作者在网络更改/IP更改时未重新连接,python,python-2.7,rabbitmq,celery,celery-task,Python,Python 2.7,Rabbitmq,Celery,Celery Task,我为一些需要在工作场所执行的任务部署了芹菜。这些任务是巨大的,我买了一些高规格的机器来执行这些任务。在详细说明我的问题之前,让我先简要介绍一下我所部署的: 远程服务器上的RabbitMQ代理 在另一个远程服务器上推送任务的生产者 在我的工作场所部署的3台机器上的工人 现在,当我开始的时候,整个过程和我测试的一样顺利,所有的过程都很棒 问题 不幸的是,我忘了咨询我的网络人员关于固定IP地址的问题,根据我们的位置,我们没有ISP提供的固定IP地址。所以我的芹菜工人在网络上断开连接,什么也不做。即
- 远程服务器上的RabbitMQ代理
- 在另一个远程服务器上推送任务的生产者
- 在我的工作场所部署的3台机器上的工人
BROKER\u CONNECTION\u MAX\u RETRIES=0
和BROKER\u HEARTBEAT=10
的配置。但我别无选择,只能把它贴在这里,寻找这方面的专家
PS:我无法在每次网络通过
kill-9
重新启动应用程序而更改IP地址时手动重新启动工作程序,方法是:
sudo rabbitmqctl stop_app
sudo rabbitmqctl start_app
为我解决了这个问题。
另外,由于我有虚拟主机设置,我也需要重新设置。
不知道为什么需要这样做。或者事实上,上述任何一项都是需要的,但它确实为我解决了问题 问题是因为我无法理解AMQP协议或RabbitMQ的本质 当芹菜工人启动时,它会在RabbitMQ打开一个通道。此通道在任何网络更改时都会尝试重新连接,但以前为该通道打开的端口/套接字已使用客户端的其他公共IP地址注册。因此,芹菜工作者(客户端)和RabbitMQ(服务器)之间的协商无法恢复,因为客户端已更改了地址,因此需要在客户端的公共IP地址发生更改的情况下建立新的通道 以上@qreOct的回答是因为我无法正确地表达这个问题,或者是因为我们的看法不同。还是非常感谢你抽出时间