rabbitmq Pika连接经常断开连接

问题描述 投票:0回答:2

我有以下代码:

import pika
import os
import eventlet
from eventlet.green import threading
pika = eventlet.import_patched('pika')
eventlet.monkey_patch()

#More Code

if __name__=='__main__'
   eventlet.spawn(pika_client)
   socketio.run(app, host='192.168.1.214')


def pika_client():
    global connection, channel
    params = pika.ConnectionParameters(heartbeat=500,
                                       blocked_connection_timeout=300)
    connection = pika.BlockingConnection(params)
    channel = connection.channel()
    return 1

但是,pika连接在20-30分钟后断开。

任何帮助将不胜感激。

flask rabbitmq flask-socketio pika eventlet
2个回答
0
投票

Pika的BlockingConnectioneventlet修补不兼容。 SelectConnection很有可能会起作用,但是它从未经过测试并且不受支持。


NOTE: RabbitMQ团队监视rabbitmq-users mailing list,并且有时仅在StackOverflow上回答问题。


0
投票

我目前正在使用下面的代码,它似乎正在工作。请告诉我这是否会造成问题

try:
   pikaClient = socketio.start_background_task(pika_client)
   socketio.run(app, host='192.168.1.214')
except KeyboardInterrupt:
    pikaClient.join()


def pika_client():
    global connection, channel        
    params = pika.ConnectionParameters(heartbeat=600,
                                                    blocked_connection_timeout=300)
    connection = pika.BlockingConnection(params)
    channel = connection.channel()
    print('Connection created') 
    while True:
            time.sleep(650)
            try:
             connection.process_data_events()
            except pika.exceptions.StreamLostError:
                print("Will try to re-connect next.") 
                params = pika.ConnectionParameters(heartbeat=600,
                                                    blocked_connection_timeout=300)
                connection = pika.BlockingConnection(params)
                channel = connection.channel()
                print('Connection re-created')  
                #continue
            except KeyboardInterrupt:
                # Gracefully close the connection
                channel.close()
                connection.close()  
© www.soinside.com 2019 - 2024. All rights reserved.