我有一个Python应用程序,我想同时运行一个消费者和一个发布者。基本上,我希望通过Consumer
获取消息,然后解析并处理它,然后通过Publisher
将其发送回RabbitMQ。
我已经从async consumer和async publisher的官方Pika文档中获取了代码。他们单独工作,但我似乎无法使他们同时工作。在应用程序的起点我有:
import messaging.MQ as MQ
MQ.start_consumer()
MQ.start_publisher()
但是,永远不会达到start_publisher()
行。
看起来罪魁祸首就是Consumer
:
self._connection.ioloop.start()
除了Consumer
中定义的asnyc方法之外,在调用该行之后,没有任何内容被执行。
我觉得这很明显,但我似乎无法指责它。
答案 0 :(得分:0)
这有点尴尬,但我在发布后的10分钟内解决了这个问题。
基本上,您只需要使用线程。可能有一种更简单的方法,但这肯定有效。
按照文档中的示例,例如viewDidLoad
,您只需要替换:
Consumer
使用:
class ExampleConsumer(object):
然后你可以简单地运行线程:
import threading
class ExampleConsumer(threading.Thread):
我还调整了publisher = Publisher()
consumer = Consumer()
publisher.start()
consumer.start()
函数并添加了一些__init__
捕获,但是在代码示例中试图保持简单。