我想用rabbitmq实现rpc客户端。
def start(self):
while True:
self.channel.basic_consume(self.on_delivery)
...
client.start() // blocking call
停止这个客户端的正确方法是什么?现在我从另一个线程创建channel.basic_cancel(self.on_cancel, self.consumer_tag)
。但是pika faq saysIt is not safe to share one Pika connection across threads.
取消消费的首选方式是什么?
2条答案
按热度按时间lnxxn5zx1#
只要您为每个线程创建一个连接,就不会有问题。
eandersson创建了一个here的示例。
2wnc66cl2#
如果要使用
basic_cancel
,请参见this gist你可以看到代码简要如下:
在 pika@1.3.3 中,没有这样一个名为
nowait
的参数,因此您只需将其从方法调用中删除即可。