如何使用amqp库创建非阻塞使用者

时间:2014-02-05 19:29:41

标签: python multithreading rabbitmq amqp

我正在使用带有RabbitMQ的amqp模块。我需要创建一个非阻塞的消费者。为此,我使用了线程模块。

有一个问题:我必须在app退出时停止线程。以下是代码的一部分:

c.start_consuming(message_callback)

while not self._stop.isSet():

    if self._stop.isSet():
        print("thread will be stopped")
    else:
        print("thread will NOT BE STOPPED")

    c.channel.wait()

问题是,c.channel.wait()有时会阻塞,有时不依赖于队列中是否有一些消息正在侦听(我做了一些实验但是还不够)

如果我可以使用c.channel.wait()函数的超时参数,我可以通过设置超时来实现该目标,例如0.1秒。就我搜索源代码而言,没有超时选项。

主要问题:如何使用amqp模块创建非阻塞使用者?

子问题1:如何修补amqp代码,使其开始使用超时值?

后备解决方案:我可以考虑使用多处理模块,以便随时终止该进程。

0 个答案:

没有答案