![](/img/trans.png)
[英]How to add multiprocessing to consumer with pika (RabbitMQ) in python
[英]Python - RabbitMQ Pika consumer - How to use async function as callback
我有以下代碼,我在其中初始化了一個監聽隊列的消費者。
consumer = MyConsumer()
consumer.declare_queue(queue_name="my-jobs")
consumer.declare_exchange(exchange_name="my-jobs")
consumer.bind_queue(
exchange_name="my-jobs", queue_name="my-jobs", routing_key="jobs"
)
consumer.consume_messages(queue="my-jobs", callback=consumer.consume)
問題是consume方法定義如下:
async def consume(self, channel, method, properties, body):
在consume方法中,我們需要等待異步函數,但這會為consume函數產生一個錯誤“coroutine is not awaited”。 有沒有辦法在 pika 中使用異步函數作為回調?
我用 @sync 注釋了我的回調,其中同步是:
def sync(f):
@functools.wraps(f)
def wrapper(*args, **kwargs):
return asyncio.get_event_loop().run_until_complete(f(*args, **kwargs))
return wrapper
(在這里找到了芹菜,但它也適用於鼠兔)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.