Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python RabbitMQ:Pika连接因对等错误而重置_Python_Python 2.7_Rabbitmq_Pika - Fatal编程技术网

Python RabbitMQ:Pika连接因对等错误而重置

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) 我将始终从

我在队列中收到的消息很大,回调函数处理每条消息需要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语句中获得打印,如下所示:

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秒后的超时看起来可疑)。您不能从客户端覆盖服务器最大值(请参阅),我假设您没有做任何不应该做的事情,比如使用线程