簡體   English   中英

Python - RabbitMQ Pika 消費者 - 如何使用異步函數作為回調

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM