芹菜工作者没有重新连接网络变更/知识产权变更

时间:2016-09-13 05:38:14

标签: python python-2.7 rabbitmq celery celery-task

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

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

现在,当我开始时,整个过程就像我测试的那样顺利,所有过程都很棒!

问题

不幸的是,我忘了咨询我的网络人员有关固定IP地址的信息,根据我们的位置,我们的ISP没有固定的IP地址。所以我的芹菜工人在网络上断开连接并且什么也不做。即使网络正在运行,因为IP地址已更改,并且未重新创建与代理的连接或工作程序未重试连接。我尝试过像BROKER_CONNECTION_MAX_RETRIES = 0BROKER_HEARTBEAT = 10这样的配置。但我别无选择,只能在这里发布,并就此问题寻找专家!

PS:每当网络通过kill -9更改IP地址时,我无法手动重启工作人员

2 个答案:

答案 0 :(得分:0)

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

sudo rabbitmqctl stop_app
sudo rabbitmqctl start_app

为我解决了这个问题。 此外,由于我有虚拟主机设置,我也需要重置。 不确定为什么需要这样做。或者事实上,上述任何一项都是必需的,但它确实为我解决了这个问题。

答案 1 :(得分:0)

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

当芹菜工作者启动时,它将在RabbitMQ打开一个频道。任何网络更改后,此通道都会尝试重新连接,但是先前为该通道打开的端口/袜子已注册到客户端的其他公共IP地址。这样,由于客户端已更改地址,芹菜工作者(客户端)与RabbitMQ(服务器)之间的协商无法恢复,因此,如果客户端的公共IP地址发生更改,则需要建立新的通道。

上面@qreOct的回答是由于我无法正确表达问题或由于我们的看法不同。仍然非常感谢您抽出宝贵的时间!