pika.exceptions.StreamLostError后服务器关闭:流连接丢失

时间:2019-07-02 19:35:42

标签: rabbitmq

我的队列中有一些图像,然后将每个图像传递到我的flask服务器,在该服务器上完成对图像的处理,并在我的rabbitmq服务器中收到响应。收到响应后,我收到此错误“ pika.exceptions.StreamLostError:流连接丢失(104,'对等重置连接')”。当Rabbitmq通道再次开始消耗连接时,会发生这种情况。我不明白为什么会这样。另外,如果此错误仍然存​​在,我想再次自动重新启动服务器。有什么办法吗?

3 个答案:

答案 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.htmlhttps://www.rabbitmq.com/heartbeats.html#tcp-keepalives