我正在使用 pika python 库与 RabbitMQ 消息代理进行交互。
要创建连接,我使用:
def get_connection():
credential = pika.PlainCredentials(LOGIN, PASS)
parameters = pika.ConnectionParameters(
HOST,
5672,
'/',
credential,
heartbeat=0,
blocked_connection_timeout=0
)
connection = pika.BlockingConnection(parameters)
return connection
进一步:
channel = get_connection().channel()
channel.basic_consume(queue='test', on_message_callback=run)
channel.start_consuming()
run
函数执行长时间计算(约30分钟),之后我调用ch.basic_ack(method.delivery_tag)
,但出现错误:
StreamLostError: Stream connection lost: ConnectionResetError(104, 'Connection reset by peer')
我不知道我需要做什么才能避免这个错误。我更改了心跳参数的值,但没有帮助
您可以在单独的线程中使用long_running_publisher,以便它在主线程计算时处理_data_events https://github.com/pika/pika/blob/main/examples/long_running_publisher.py