首页 > 解决方案 > 如何验证 Pika 1.0.0 "basic_publish" 方法是否成功执行

问题描述

在 Pika 0.13.1 中,此代码按预期工作:

    if channel.basic_publish(exchange='exchange', routing_key='', properties=properties, body=message_as_string):
        pass
    else:
        raise RuntimeException("Fail!")

升级到 Pika 1.0.0 后,“basic_publish”函数似乎不再返回布尔值,但我还没有弄清楚它返回的确切内容(如果有的话),以及如何验证函数是否成功执行。根据我对 Pika 源代码的理解,我认为 basic_publish 不会返回任何内容,而是会在发生任何事情时引发异常。

有没有其他人想出验证“basic_publish”是否成功执行?

标签: python-3.xrabbitmqpika

解决方案


如果没有抛出异常,则发布已成功发送。您应该考虑使用强制标志并启用发布者确认在您的消息被 RabbitMQ 路由和排队时得到通知。该basic_publish功能的成功只是方程式的一部分。

我是 Pika 的维护者之一。将来,考虑张贴到pika-pythonrabbitmq-users邮寄名单。


注意: RabbitMQ 团队会监控rabbitmq-users 邮件列表,有时只会在 StackOverflow 上回答问题。


推荐阅读