【问题标题】:RabbitMQ - Socket Closed Exception - Windows Server 2012RabbitMQ - 套接字关闭异常 - Windows Server 2012
【发布时间】:2017-08-03 13:36:16
【问题描述】:

所以我有一个发布者,它使用 schedule python 包每隔 5-10 分钟从文件中读取数据,并将每一行发布到队列中。 另一方面,我有消费者使用类似的东西:

self.connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
self.channel = self.connection.channel()
while True:
        method, properties, body = self.channel.basic_get(queue=conf.UNIVERSAL_MESSAGE_QUEUE, no_ack=False)
        if body is not None:
            self.assign_task(body=body)
            self.channel.basic_ack(delivery_tag=method.delivery_tag)

        else:
            self.logger.info('channel empty')
            self.move_to_done()
            time.sleep(5)

分配任务功能如下:

def assign_task(body=body):
       <do something with the message body>

由于某种原因,一段时间后它会抛出以下错误:

2017-08-03 15:27:43,756: ERROR: base_connection.py: _handle_error:   335: Socket Error: 10054
2017-08-03 15:27:43,756: WARNING: base_connection.py: _check_state_on_disconnect:   180: Socket closed when connection was open
2017-08-03 15:27:43,756: WARNING: connection.py: _on_disconnect:   1360: Disconnected from RabbitMQ at localhost:5672 (0): Not specified

本质上,发布者和消费者都是 2 个不同的 Python 程序,旨在在装有 Windows Server 2012 的单台机器上运行。社区可以帮助了解这里可能出现的问题。
相同的代码在本地运行绝对正常我的windows机器

以下是我的日志文件的输出。
=ERROR REPORT==== 3-Aug-2017::15:06:48 === closing AMQP connection <0.617.0> ([::1]:53485 -> [::1]:5672): missed heartbeats from client, timeout: 60s

【问题讨论】:

    标签: python sockets rabbitmq windows-server-2012 python-pika


    【解决方案1】:

    对此的简单回答是创建一个持久队列并将 heartbeat_interval 设置为 0。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-18
      • 2014-03-01
      • 2014-01-23
      • 1970-01-01
      • 2013-11-02
      • 2013-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多