RabbitMQ 鼠兔。如何修复 StreamLostError

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

我正在使用 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')

我不知道我需要做什么才能避免这个错误。我更改了心跳参数的值,但没有帮助

python rabbitmq pika
1个回答
0
投票

您可以在单独的线程中使用long_running_publisher,以便它在主线程计算时处理_data_events https://github.com/pika/pika/blob/main/examples/long_running_publisher.py

© www.soinside.com 2019 - 2024. All rights reserved.