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

Python 心跳线程导致启动时出现Pika警告,python,python-2.7,rabbitmq,pika,Python,Python 2.7,Rabbitmq,Pika,我正在使用pika 1.1.0和Python 2.7连接RabbitMQ。 我正在使用BlockingConnection并运行一个侦听器/使用者,该侦听器/使用者将持续侦听队列中的消息。我还使用线程模块创建了一个单独的线程,它将每60秒发送一个心跳帧,以保持运行的侦听器连接。心跳信号发送代码为: blocking_connection._impl._send_frame(pika.frame.Heartbeat()) time.sleep(60) Pika几乎每次启动监听器时都会记录一条警告

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

blocking_connection._impl._send_frame(pika.frame.Heartbeat())
time.sleep(60)
Pika几乎每次启动监听器时都会记录一条警告,说“写入指示在fd=10上,但写入器回调为无;”此警告从文件pika.adapters.utils.selector\u ioloop\u adapter打印。 但是,当我阻止第一个心跳立即被发送时,意味着我将60秒的睡眠线放在帧发送线之前,警告不会显示

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

提前感谢您提供的任何见解

我还使用线程模块创建了一个单独的线程 将每60秒发送一次心跳帧以保持运行 侦听器已连接

没有必要这样做。只要代码不阻塞Pika的I/O循环,Pika就会为您发送心跳。此外,Pika不是线程安全的,因此从另一个线程调用
\u send\u frame
可能会导致您看到的错误

如果您愿意,请在或邮件列表上共享您的代码,我会查看它。我维护皮卡图书馆



注意:RabbitMQ团队监控
RabbitMQ用户
,并且只在某些时候回答有关StackOverflow的问题。

感谢您的回答。我将致力于将其缩小到再现该问题的代码子集,并将在获得该问题后与大家分享。