2017-08-03 40 views
0

因此,我有一个发布商正在使用计划 python包来读取文件中的数据和每隔5-10分钟并将每行发布到队列中。 在我一直在使用一些消费者喜欢的另一面:RabbitMQ - 套接字关闭异常 - Windows Server 2012

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的单台计算机上运行。社区可以帮助了解wha这里可能会出错。
相同的代码运行的精绝本地我的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

回答

0

简单的答案,这是建立一个持久的队列,并设置HEARTBEAT_INTERVAL为0