使用pika 的BlockingConnection
但啟動后不久, 作為publish的生產端就會掉線:
pika.exceptions.StreamLostError: Stream connection lost: ConnectionResetError(10054, '遠程主機強迫關閉了一個現有的連接。', None, 10054, None)
原因:
pika 默認不設置這個heatbeat參數,生產者在一定時間內和服務端沒有數據來往,服務端會自動斷開連接,不會一直保持connection狀態。heatbeat=0不發送心跳,服務端永遠不會斷開這個連接;,rabbitmq 的日志顯示missed heartbeats from client, timeout: 60s
import pika
connection = pika.BlockingConnection(
pika.ConnectionParameters(
host='localhost',
heartbeat=0
))
