1
我有一些腳本,使用pika.SelectConnection與RabbitMq服務器進行通信。Rabbitmq pika自動重連
有沒有辦法讓這些腳本嘗試自動重新連接到rmq服務器,以防服務器停機的情況下,而腳本工作?
我有一些腳本,使用pika.SelectConnection與RabbitMq服務器進行通信。Rabbitmq pika自動重連
有沒有辦法讓這些腳本嘗試自動重新連接到rmq服務器,以防服務器停機的情況下,而腳本工作?
我有很多該用下面的辦法腳本來重新連接:
while True:
try:
mqExch.channel.connection.drain_events(timeout=25)
except socket.timeout:
hb.beat() # let our supervisor know we are not hung
它不使用鼠兔,但海帶,仍然可以適用的原則。 drain_events
方法是消息消息的核心,即它永遠循環接收消息並運行回調來處理消息。正如你在這裏看到的,我每25秒鐘就有一個低級套接字庫。對於一些庫,我必須修補幾行代碼才能使此行爲在模塊內部不會崩潰的情況下運行。
在任何情況下,hb.beat發送的心跳信號都由管理程序進程監視,如果在太短的時間範圍內發生太多故障,此進程將終止腳本。殺死腳本後,主管重新啓動它。這在處理間歇性網絡錯誤或MQ代理重新啓動時運行良好。雖然我可以讓我的腳本重新連接,但更簡單的方法是殺死並重新啓動。