rabbitmq pika connection closed

家中PC上,端口扫描的python脚本多次出现pika connection closed的错误,同一脚本在办公机和虚机上从来没问题。

比较奇怪,因为我比较谨慎,在需要延时的地方都使用了mq.conn.sleep()而非time.sleep(),也避免陷入一个长时的循环。

connection closed一般是因为heartbeat timeout引起的,server主动关闭了连接。

为了解决这个问题,在家中PC机上禁用heartbeat,参数heartbeat_interval设置为0:

params = pika.ConnectionParameters(host=MQ_HOST, port=MQ_PORT,
                                   credentials=pika.credentials.PlainCredentials(MQ_USER, MQ_PASSWD),
                                   heartbeat_interval=0)
self.conn = pika.BlockingConnection(parameters=params)