我的队列中有一些图像,我将每个图像传递到我的flask服务器,在那里处理图像并在rabbitmq服务器中接收响应。收到响应后,我得到这个错误“pika.exceptions.StreamLostError:流连接丢失(104,'连接由对等端重置')"。当rabbitmq channel再次开始消耗连接时,就会发生这种情况。我不明白为什么会这样。如果此错误仍然存在,我还想重新启动服务器。有什么办法可以做到吗?
xggvc2p61#
您的消费进程可能花费了太多时间来完成并将Ack/Nack发送到服务器。因此,服务器不会从您的客户端接收心跳,从而停止服务。然后,在客户端,您将收到:
pika.exceptions.StreamLostError: Stream connection lost(104,'Connection reset by peer')
您还应该看到服务器日志。大概是这样的:
missed heartbeats from client, timeout: 60s
莫尔信息请参见this issue。
l0oc07j22#
如果在ConnectionParameters中设置了heartbeat,则可以更改流连接限制
connection_params = pika.ConnectionParameters(heartbeat=10)
以秒为单位的数字。例如,它说你的TCP连接保持10秒。更多信息https://www.rabbitmq.com/heartbeats.html和https://www.rabbitmq.com/heartbeats.html#tcp-keepalives
xbp102n03#
在另一个线程上做你的工作。把这段代码作为一个例子-https://github.com/pika/pika/blob/master/examples/basic_consumer_threaded.py
3条答案
按热度按时间xggvc2p61#
您的消费进程可能花费了太多时间来完成并将Ack/Nack发送到服务器。因此,服务器不会从您的客户端接收心跳,从而停止服务。然后,在客户端,您将收到:
您还应该看到服务器日志。大概是这样的:
莫尔信息请参见this issue。
l0oc07j22#
如果在ConnectionParameters中设置了heartbeat,则可以更改流连接限制
以秒为单位的数字。例如,它说你的TCP连接保持10秒。
更多信息https://www.rabbitmq.com/heartbeats.html和https://www.rabbitmq.com/heartbeats.html#tcp-keepalives
xbp102n03#
在另一个线程上做你的工作。把这段代码作为一个例子-
https://github.com/pika/pika/blob/master/examples/basic_consumer_threaded.py