首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当通过设置passive="True“进行查询时,即使队列存在,来自pika的"queue_declare”也会返回“None”

当通过设置passive="True“进行查询时,即使队列存在,来自pika的"queue_declare”也会返回“None”
EN

Stack Overflow用户
提问于 2014-04-10 23:13:36
回答 1查看 4.9K关注 0票数 3

我使用pika作为一个消费者,它使用队列"email“中的数据。

来自pika的queue_declare在通过设置None进行查询时返回passive="True",即使队列存在也是如此。

我使用web界面创建了队列"email“,我可以看到它存在(第三方应该创建它;我这样做只是为了测试)。

现在,在我的程序中,当我打开通道时,在我开始使用电子邮件队列之前,我想确保队列已经存在,所以我将passive设置为True

代码语言:javascript
复制
def message(channel, envelope, properties, body):
    if send(envelope.routing_key, body):
        channel.basic_ack(envelope.delivery_tag)
        return
    print("Could not send message.")

def channel_open(channel):
    QUEUES = CONFIG._defaults['queues']
    queuelist = QUEUES.split(",")
    for queuename in queuelist:
        result = channel.queue_declare(message,queue=queuename, passive=True)
        if not result:
            raise NameError("declare the queues specified "
                            "in default config section first")
        channel.basic_consume(queue=queuename, consumer_callback=message)

我在结果中得到的是"None“,而我希望得到一个"ok”,因为队列已经存在。有什么建议吗?是不是因为当使用web UI声明队列时,没有指定回调?我只想知道队列是否存在,但是pika queue_declare函数调用了一个回调函数作为参数,如果没有回调函数,就会报错。

EN

回答 1

Stack Overflow用户

发布于 2014-04-22 22:00:14

您应该使用回调:

代码语言:javascript
复制
def qdeclare_callback(method_frame):
    if not method_frame: # method_frame is a result from queue_declare:
        raise NameError("declare the queues specified "
                        "in default config section first")
    # channel.basic_consume(queue=queuename, consumer_callback=message)
    channel.basic_consume(queue=method_frame.method.queue,
                          consumer_callback=message)

# ...
result = channel.queue_declare(qdeclare_callback, queue=queuename, passive=True)

查看文档中的示例:http://pika.readthedocs.org/en/latest/examples/asynchronous_consumer_example.html

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22992073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档