警告:base_connection:断开时未知状态:0 Pika/Celery/Rabbitmq
我正在尝试运行一个简单的“你好,世界”程序,使用的是celery和rabbitmq(来自rabbitmq网站)。
当我运行 python send.py
时,它输出了一些内容并报了错:
python send.py
[x] Sent 'Hello World!'
WARNING:pika.adapters.base_connection:Unknown state on disconnect: 0
WARNING:pika.adapters.base_connection:Unknown state on disconnect: 0
这是我的 send.py
文件:
#!/usr/bin/env python
import pika
import logging
logging.basicConfig()
connection = pika.BlockingConnection(pika.ConnectionParameters(
host='xx.xxx.xx.xxx'))
channel = connection.channel()
channel.queue_declare(queue='hello')
channel.basic_publish(exchange='',
routing_key='hello',
body='Hello World!')
print " [x] Sent 'Hello World!'"
connection.close()
这是 receive.py
文件:
#!/usr/bin/env python
import pika
import logging
logging.basicConfig()
connection = pika.BlockingConnection(pika.ConnectionParameters(
host='xx.xxx.xx.xxx'))
channel = connection.channel()
channel.queue_declare(queue='hello')
print ' [*] Waiting for messages. To exit press CTRL+C'
def callback(ch, method, properties, body):
print " [x] Received %r" % (body,)
channel.basic_consume(callback,
queue='hello',
no_ack=True)
channel.start_consuming()
编辑(修复):
为了不再收到这个警告 WARNING:pika.adapters.base_connection:Unknown state on disconnect: 0
请去掉在 send.py
或 receive.py
文件中使用的 connection.close()
这一行。
1 个回答
0
我不太明白这里为什么会提到celery,因为你只是正在做RabbitMQ的“你好,世界”教程,这和celery没有关系。不过我觉得那些警告其实是因为pika里的一个bug造成的。这并不是你在示例中做错了什么。你可以在这里查看这个bug的报告:https://github.com/pika/pika/pull/346
请注意,这些只是警告;它们是在调用connection.close()时打印出来的,并不会影响程序的运行。