警告:base_connection:断开时未知状态:0 Pika/Celery/Rabbitmq

0 投票
1 回答
654 浏览
提问于 2025-04-18 03:08

我正在尝试运行一个简单的“你好,世界”程序,使用的是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.pyreceive.py 文件中使用的 connection.close() 这一行。

1 个回答

0

我不太明白这里为什么会提到celery,因为你只是正在做RabbitMQ的“你好,世界”教程,这和celery没有关系。不过我觉得那些警告其实是因为pika里的一个bug造成的。这并不是你在示例中做错了什么。你可以在这里查看这个bug的报告:https://github.com/pika/pika/pull/346

请注意,这些只是警告;它们是在调用connection.close()时打印出来的,并不会影响程序的运行。

撰写回答