我无法从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()
2条答案
按热度按时间waxmsbnn1#
根据设计,
start_consuming
将永远阻塞。您必须在on_request
方法中取消使用者。您还可以使用this method来使用消息,这允许设置
inactivity_timeout
,然后您可以在其中取消您的使用者。最后,
SelectConnection
在与Pika的I/O环路交互时具有更大的灵活性,当您的需求比BlockingConnection
支持的更复杂时,推荐使用SelectConnection
。**注意:**RabbitMQ团队监控
rabbitmq-users
邮件列表,仅在有时回答StackOverflow上的问题。hgtggwj02#
只需使用channel.stop_consumpting()