python-3.x 无法停止在皮卡消费

o3imoua4  于 2023-01-18  发布在  Python
关注(0)|答案(2)|浏览(199)

我无法从Pika返回数据,因为它start_consuming没有停止。它打印结果,但不返回输出

def on_request(ch, method, props, body):
    directory =body

    print(directory.decode('utf-8'))
    response = parse(directory.decode('utf-8'))

    ch.basic_publish(exchange='',
                     routing_key=props.reply_to,
                     properties=pika.BasicProperties(correlation_id = \
                                                         props.correlation_id),
                     body=str(response))
    ch.basic_ack(delivery_tag=method.delivery_tag)
def start():
    print("hi")
    connection = pika.BlockingConnection(
        pika.ConnectionParameters(host='localhost'))

    channel = connection.channel()

    channel.queue_declare(queue='rpc_queue')

    channel.basic_qos(prefetch_count=2)
    channel.basic_consume(queue='rpc_queue', on_message_callback=on_request)

    print(" [x] Awaiting RPC requests")
    channel.start_consuming()
waxmsbnn

waxmsbnn1#

根据设计,start_consuming将永远阻塞。您必须在on_request方法中取消使用者。
您还可以使用this method来使用消息,这允许设置inactivity_timeout,然后您可以在其中取消您的使用者。
最后,SelectConnection在与Pika的I/O环路交互时具有更大的灵活性,当您的需求比BlockingConnection支持的更复杂时,推荐使用SelectConnection

**注意:**RabbitMQ团队监控rabbitmq-users邮件列表,仅在有时回答StackOverflow上的问题。

hgtggwj0

hgtggwj02#

只需使用channel.stop_consumpting()

相关问题