心跳线程导致启动时出现Pika警告

2024-04-26 11:40:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用pika 1.1.0和python2.7连接RabbitMQ。 我正在使用BlockingConnection并运行一个侦听器/使用者,它将持续侦听队列中的消息。我还使用线程模块创建了一个单独的线程,它将每60秒发送一个心跳帧,以保持正在运行的侦听器连接。心跳信号发送代码为:

blocking_connection._impl._send_frame(pika.frame.Heartbeat())
time.sleep(60)

Pika几乎每次监听器启动时都会记录一个警告,说“WRITE indicated on fd=10,but writer callback is None;”这个警告是从文件中打印出来的pika.adapters.utils文件.selector\u ioloop\u适配器。 但是当我阻止第一个心跳立即被发送时,意味着我把60秒的休眠线放在帧发送线之前,警告就不会出现。你知道吗

我试图理解实际发生了什么,为什么启动一个消费者/监听器,然后启动一个心跳线程会导致这个警告?警告的意义和影响是什么?你知道吗

提前感谢您提供的任何见解。你知道吗


Tags: 模块文件代码消息警告信号队列rabbitmq
1条回答
网友
1楼 · 发布于 2024-04-26 11:40:40

I am also creating a separate thread using the threading module that will send a heartbeat frame every 60 seconds to keep the running listener connected.

没有必要那样做。只要你的代码不阻塞Pika的I/O循环,Pika就会为你发送心跳信号。此外,Pika不是线程安全的,因此从另一个线程调用_send_frame可能会导致与您看到的错误类似的错误。你知道吗

如果您愿意,请在^{}^{}邮件列表上共享您的代码,我将对其进行审阅。我维护皮卡图书馆。你知道吗


注意:RabbitMQ团队监视rabbitmq-usersmailing list,有时只回答有关StackOverflow的问题。

相关问题 更多 >