pika 的坑(pika.exceptions.StreamLostError: Stream connection lost: ConnectionResetError)
使用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 ))