Есть вот такой consumer из оф. документации aio-pika:
async def orders_queue():
connection = await aio_pika.connect_robust(
host="localhost"
)
queue_name = "orders"
async with connection:
channel = await connection.channel()
await channel.set_qos(prefetch_count=10)
queue = await channel.declare_queue(queue_name)
async with queue.iterator() as queue_iter:
async for message in queue_iter:
async with message.process():
order_id = message.body.decode()
print(order_id)
if queue.name in message.body.decode():
break
На стороне крутится FastApi сервис, который принимает callback от эквайринга и обновляет статус заказа в бд. Необходимо реализовать создание заказа на стороне другого агрегатора непосредственно в боте, так как при проектировании библиотеки, модели и схемы данных не разнесли по отдельным сервисам, а переносить это все в сервис для работы с эквайрингом не целесообразно. Я решил, что можно с этого сервиса публиковать сообщение в очередь и обрабатывать его на стороне бота, но если запускать бота с помощью вебхука, а эту функцию-consumer с помощью create_task, то айограммовский вебхук блокирует ее дальнейшее выполнение, бот работает, но сообщения из очереди кролика больше не принимает. Есть ли вариант обхода блокировки loop'а стартером вебхука, чтобы и бот продолжал принимать апдейты и consumer не блокировался?