Python RabbitMQ:Pika连接因对等错误而重置
我在队列中收到的消息很大,回调函数处理每条消息需要40-50秒。回调函数中有以下部分代码:Python RabbitMQ:Pika连接因对等错误而重置,python,python-2.7,rabbitmq,pika,Python,Python 2.7,Rabbitmq,Pika,我在队列中收到的消息很大,回调函数处理每条消息需要40-50秒。回调函数中有以下部分代码: if ch.is_open: print "channel is open: ", ch.is_open print "Method delivery tag: ", method.delivery_tag else: print "Channel is closed" ch.basic_ack(delivery_tag = method.delivery_tag) 我将始终从
if ch.is_open:
print "channel is open: ", ch.is_open
print "Method delivery tag: ", method.delivery_tag
else:
print "Channel is closed"
ch.basic_ack(delivery_tag = method.delivery_tag)
我将始终从if语句中获得打印,如下所示:
Channel is open: True
Method delivery tag: x #Some number
但是在打印语句之后我得到了以下错误
File "receive_vb.py", line 200, in <module>
channel.start_consuming()
File "/usr/lib/python2.7/site-packages/pika/adapters/blocking_connection.py", line 1822, in start_consuming
self.connection.process_data_events(time_limit=None)
File "/usr/lib/python2.7/site-packages/pika/adapters/blocking_connection.py", line 758, in process_data_events
self._dispatch_channel_events()
File "/usr/lib/python2.7/site-packages/pika/adapters/blocking_connection.py", line 521, in _dispatch_channel_events
impl_channel._get_cookie()._dispatch_events()
File "/usr/lib/python2.7/site-packages/pika/adapters/blocking_connection.py", line 1445, in _dispatch_events
evt.body)
File "receive_vb.py", line 180, in callback
ch.basic_ack(delivery_tag = method.delivery_tag)
File "/usr/lib/python2.7/site-packages/pika/adapters/blocking_connection.py", line 2031, in basic_ack
self._flush_output()
File "/usr/lib/python2.7/site-packages/pika/adapters/blocking_connection.py", line 1292, in _flush_output
*waiters)
File "/usr/lib/python2.7/site-packages/pika/adapters/blocking_connection.py", line 477, in _flush_output
result.reason_text)
pika.exceptions.ConnectionClosed: (-1, "error(104, 'Connection reset by peer')")
在RabbitMQ中TCP写入超时之前,您的消息太大,无法通过网络发送:
{writer,send_failed,{error,timeout}}
你应该压缩你的消息,使它们更小,或者把它们分成多个消息。您的网络可能过载,或者您的服务器可能过载。或者,可能存在其他网络或服务器问题,阻止了邮件的快速传递—此处没有足够的信息来诊断
作为最后一种手段,您可以通过tcp\u-listen\u选项增加RabbitMQ的套接字写入超时。发送超时
,但这只会掩盖真正根本原因的症状。您的消息太大无法在RabbitMQ中的tcp写入超时之前通过网络发送:
{writer,send_failed,{error,timeout}}
你应该压缩你的消息,使它们更小,或者把它们分成多个消息。您的网络可能过载,或者您的服务器可能过载。或者,可能存在其他网络或服务器问题,阻止了邮件的快速传递—此处没有足够的信息来诊断
作为最后一种手段,您可以通过
tcp\u listen\u选项增加RabbitMQ的套接字写入超时。发送\u timeout
,但这只会掩盖真正根本原因的症状。您是否也可以检查服务器设置(尝试查找类似于30秒的内容-恰好30秒后的超时看起来可疑)。您无法从客户端覆盖服务器最大值(请参阅),我假设您没有做任何不应该做的事情,例如使用线程。请检查您的服务器设置(尝试查找类似于30秒的内容-恰好30秒后的超时看起来可疑)。您不能从客户端覆盖服务器最大值(请参阅),我假设您没有做任何不应该做的事情,比如使用线程