【问题标题】:Rabbitmq pika auto reconnectionRabbitmq pika 自动重连
【发布时间】:2012-01-16 15:05:44
【问题描述】:

我有一些脚本,使用 pika.SelectConnection 与 RabbitMq 服务器通信。

有没有办法让那些脚本尝试自动重新连接到 rmq 服务器,以防服务器宕机而脚本工作?

【问题讨论】:

    标签: python rabbitmq amqp pika


    【解决方案1】:

    我有很多使用以下方法重新连接的脚本:

     while True:
         try:
             mqExch.channel.connection.drain_events(timeout=25)
         except socket.timeout:
             hb.beat() # let our supervisor know we are not hung
    

    它不是使用鼠兔,而是使用 Kombu,但原理可以应用。 drain_events 方法是消息消费的核心,即它永远循环接收消息并运行回调来处理消息。正如您在此处看到的,我的低级套接字库每 25 秒超时一次。对于一些库,我必须修补几行代码才能使此行为正常工作而不会在模块内部崩溃。

    在任何情况下,由 hb.beat 发送的心跳都由主管进程监控,如果在太短的时间内出现太多故障,该进程将终止脚本。杀死脚本后,主管重新启动它。这在处理间歇性网络错误或 MQ 代理重新启动时效果很好。虽然我可以让我的脚本重新连接,但杀死并重新启动更简单。

    【讨论】:

      猜你喜欢
      • 2012-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      • 2021-03-05
      • 1970-01-01
      相关资源
      最近更新 更多