如何使用 Pika 编写异步 RPC 客户端?

How to write an async RPC client with Pika?

我正在尝试使用 pika 编写异步 RPC 客户端,我的代码基于以下示例,

http://pika.readthedocs.io/en/latest/examples/asynchronous_publisher_example.html

问题是根据 pika 的 RPC blocking example,RPC 调用不使用交换,但是每当我尝试使用

打开交换
self._channel.exchange_declare(self.on_exchange_declareok,
                                   '',
                                   self.EXCHANGE_TYPE)

我掉线了。此外,如果我尝试跳过 exchange_declare 函数并直接跳转到声明队列,我会得到相同的结果。解决这个问题的正确方法是什么?

您可以通过添加处理 RabbitMQ 连接的后台线程来实现异步 RPC 客户端。我有一个可用的 pika 和 flask 的工作示例 here

您还有一个更详细的示例,该示例基于我自己的可用库 here

这些显然仍然基于阻塞连接,但至少它们提供了异步解决方案。