Python Rabbitmq pika自动重新连接

Python Rabbitmq pika自动重新连接,python,rabbitmq,amqp,pika,Python,Rabbitmq,Amqp,Pika,我有一些脚本,使用pika.SelectConnection与RabbitMq服务器通信 在脚本工作时,是否有任何方法可以使这些脚本尝试自动重新连接到rmq服务器,以防服务器停机 我有很多脚本使用以下方法重新连接: while True: try: mqExch.channel.connection.drain_events(timeout=25) except socket.timeout: hb.beat() # let our su

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


在脚本工作时,是否有任何方法可以使这些脚本尝试自动重新连接到rmq服务器,以防服务器停机

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

 while True:
     try:
         mqExch.channel.connection.drain_events(timeout=25)
     except socket.timeout:
         hb.beat() # let our supervisor know we are not hung
它不使用pika,但使用Kombu,尽管如此,这些原则还是可以应用的。
drain\u events
方法是消息消费的核心,即它循环接收消息并运行回调来处理消息。正如您在这里看到的,我的低级套接字库每25秒超时一次。对于一些库,我必须修补几行代码,才能使这种行为正常工作,而不会在模块内部崩溃


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

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

 while True:
     try:
         mqExch.channel.connection.drain_events(timeout=25)
     except socket.timeout:
         hb.beat() # let our supervisor know we are not hung
它不使用pika,但使用Kombu,尽管如此,这些原则还是可以应用的。
drain\u events
方法是消息消费的核心,即它循环接收消息并运行回调来处理消息。正如您在这里看到的,我的低级套接字库每25秒超时一次。对于一些库,我必须修补几行代码,才能使这种行为正常工作,而不会在模块内部崩溃

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