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

无论如何,是否有那些脚本尝试自动重新连接到rmq服务器,以防服务器停机而脚本正常工作?

有帮助吗?

解决方案

我有许多脚本使用以下方法重新连接: 通用标签

它不是使用pika,而是使用Kombu,但是仍然可以使用这些原理。drain_events方法是消息消耗的核心,即,它永远循环接收消息并运行回调以处理消息。如您在这里看到的,我有一个低级的套接字库每25秒超时一次。对于某些库,我不得不修补两行代码,以使这种行为能够正常工作而不会在模块内部崩溃。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top