使用pika connection.close()给出“警告:pika.adapters.base_connection:断开时的未知状态:0”

时间:2014-01-06 23:28:58

标签: python-2.7 rabbitmq ipython ipython-notebook pika

使用pika关闭与RabbitMQ服务器的连接时,会出现警告WARNING:pika.adapters.base_connection:Unknown state on disconnect: 0

如果未使用connection.close(),则不会显示警告。是什么导致了这个警告,这是我们可以忽略的事情吗?

在Mac OSX上使用Python 2.7,RabbitMQ 3.2.2,iPython 1.1.0,pika 0.9.13。

enter image description here

2 个答案:

答案 0 :(得分:2)

这是通过拉取请求#346修复的。等待新版本:))

答案 1 :(得分:0)

如果在通道完全关闭之前关闭我的BlockingConnection,这在RabbitMQ 3.3.3中就会发生这种情况。解决方案是在通道的close-callback中关闭连接。另外,使用context manager自动关闭频道。

params = pika.ConnectionParameters(host=self._host, port=self._port)
connection = pika.BlockingConnection(params)
with contextlib.closing(connection.channel()) as channel:
    # Close connection once channel is closed
    def closeConnection(channel, replyCode, replyText):
        connection.close()
    channel.add_on_close_callback(closeConnection)

    # Declare a durable queue; we will use the default exchange for
    # simple key-based routing
    channel.queue_declare(queue=self._queueName, durable=True) 
    ...
    ...