我的队列中有一些图像,然后将每个图像传递到我的flask服务器,在该服务器上完成对图像的处理,并在我的rabbitmq服务器中收到响应。收到响应后,我收到此错误“ pika.exceptions.StreamLostError:流连接丢失(104,'对等重置连接')”。当Rabbitmq通道再次开始消耗连接时,会发生这种情况。我不明白为什么会这样。另外,如果此错误仍然存在,我想再次自动重新启动服务器。有什么办法吗?
答案 0 :(得分:4)
您的消耗过程可能要花费太多时间才能完成并将Ack / Nack发送到服务器。因此,服务器不会从您的客户端收到心跳,从而停止服务。然后,在客户端上您会收到:
pika.exceptions.StreamLostError: Stream connection lost(104,'Connection reset by peer')
您还应该看到服务器日志。可能是这样的:
missed heartbeats from client, timeout: 60s
请参阅this issue了解更多信息。
答案 1 :(得分:1)
在其他线程上进行工作。将此代码作为示例-
https://github.com/pika/pika/blob/master/examples/basic_consumer_threaded.py
注意: RabbitMQ团队监视rabbitmq-users
mailing list,并且有时仅在StackOverflow上回答问题。
答案 2 :(得分:0)
如果您在 ConnectionParameters 中设置心跳,您可以更改流连接限制
connection_params = pika.ConnectionParameters(heartbeat=10)
以秒为单位的数字。例如,它说您的 TCP 连接保活时间为 10 秒。
更多信息https://www.rabbitmq.com/heartbeats.html和https://www.rabbitmq.com/heartbeats.html#tcp-keepalives