繁体   English   中英

Rabbitmq pika自动重新连接

[英]Rabbitmq pika auto reconnection

我有一些脚本,使用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_events方法是消息消耗的核心,即,它永远循环接收消息并运行回调以处理消息。 如您在这里看到的,我有低级套接字库每25秒超时。 对于某些库,我必须修补几行代码才能使此行为正常工作而不会崩溃到模块内部。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM