问题描述
我之前 question 我问过在线程中运行 Python RabbitMQ(我知道它不是线程安全的),但因为我们使用的是 Quart 框架,所以不得不这样做。我一直在寻找以非阻塞方式运行兔子消费者的方法,所以我不需要线程,但我发现的示例代码不起作用和/或不可靠,所以我希望我能得到一些帮助请问我哪里出错了。
import time
import pika
def callback(channel,method,properties,body):
print(f" [x] received {body}")
credentials = pika.PlainCredentials('example','example')
parameters = pika.ConnectionParameters('localhost',credentials=credentials)
connection = pika.BlockingConnection(parameters)
channel = connection.channel()
results_queue = channel.queue_declare(queue='processing_results_queue',durable=True)
channel.basic_consume(queue='processing_results_queue',auto_ack=True,on_message_callback=callback)
run_messaging_thread = True
while run_messaging_thread:
if not results_queue.method.message_count == 0:
method,body = channel.basic_get('processing_results_queue')
print('process_scrape_result(channel,body)')
time.sleep(0.1)
问题是,如果我发布消息,消费者在我重新启动之前不会收到它,然后它会与第 2 次及以后的正文混淆,而不是说字符串“test”。
>解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)