Rabbitmq error: [Errno 10054] An existing connection was forcibly closed by the remote host

时间:2016-04-25 09:41:42

标签: python rabbitmq kombu

I am using Kombu in Python to consume a durable RabbitMQ queue.

There is only one consumer consuming the queue in Windows. This consumer produces the below error:

Traceback (most recent call last):
  File ".\consumer_windows.py", line 66, in <module>
    message.ack()
  File "C:\Users\Administrator\Anaconda2\lib\site-packages\kombu\message.py", line 88, in ack
    self.channel.basic_ack(self.delivery_tag)
  File "C:\Users\Administrator\Anaconda2\lib\site-packages\amqp\channel.py", line 1584, in basic_ack
    self._send_method((60, 80), args)
  File "C:\Users\Administrator\Anaconda2\lib\site-packages\amqp\abstract_channel.py", line 56, in _send_method
    self.channel_id, method_sig, args, content,
  File "C:\Users\Administrator\Anaconda2\lib\site-packages\amqp\method_framing.py", line 221, in write_method
    write_frame(1, channel, payload)
  File "C:\Users\Administrator\Anaconda2\lib\site-packages\amqp\transport.py", line 182, in write_frame
    frame_type, channel, size, payload, 0xce,
  File "C:\Users\Administrator\Anaconda2\lib\socket.py", line 228, in meth
    return getattr(self._sock,name)(*args)
error: [Errno 10054] An existing connection was forcibly closed by the remote host

There are at most 500 messages in the queue at any one time. Each message is small in size however it is a task and takes up to 10 minutes to complete (although it usually takes less then 5 mins per message).

I have tried restarting the consumer, RabbitMQ server and deleting the queue however the error still persists.

I've seen this question however the answer is from 2010 and my rabbitmq.log has different entries:

=ERROR REPORT==== 24-Apr-2016::08:26:20 ===
closing AMQP connection <0.6716.384> (192.168.X.X:59602 -> 192.168.Y.X:5672):
{writer,send_failed,{error,timeout}}

There were no recent events in the rabbitmq-sasl.log.

Why is this error happening and how can I prevent it from occurring?

2 个答案:

答案 0 :(得分:0)

与托管的MySQL服务器存在相同的问题... 我了解到,如果长时间打开连接或长时间不进行修改,就会发生这种情况。 如果您的程序打开数据库或在整个程序运行之前执行任何操作,请以某种方式将其打开,以使DB写入所有内容,然后关闭并重复

我不知道rabbitmq到底是什么,但是我认为您写为标题的错误可能是由于这个原因

答案 1 :(得分:0)

我还在寻找答案。同时,我重新启动与Rabbit服务器的连接:

while True:
    try:
​
        connection = pika.BlockingConnection(params)
        channel = connection.channel() # start a channel
        channel.queue_declare(queue=amqp_q, durable=True) # Declare a queue
        ...
​
    except pika.exceptions.ConnectionClosed:
        print('connection closed... and restarted')