VasyOK
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Всем привет. Need help) Есть код который получает сообщения из очереди сообщений RabbitMQ и должен асинхронно запускать функцию для их обработки. Но почему-то он работает последовательно. Код: first_message = False async def consuming(): global service_name, service_uuid, consuming_channel, demons_server_ip connection = await aio_pika.connect_robust( "amqp://mq_admin:123@10.128.0.1/" ) async with connection: queue_name = service_name + '.' + service_uuid channel: aio_pika.abc.AbstractChannel = await connection.channel() queue: aio_pika.abc.AbstractQueue = await channel.declare_queue(queue_name,auto_delete=True) queue = await channel.declare_queue(queue_name,auto_delete=True) async with queue.iterator() as queue_iter: async for message in queue_iter: data = message.body await callback(data) async def callback(body): global first_message if first_message == False: body = json.loads(body) first_message = True await asyncio.sleep(5) # Здесь через 5 секунд записываем первое сообщение в файл '''''' else: print(body) | Хочется добиться следующей логики: приходит первое сообщение, через 5 сек оно должно записаться в файл, а второе и последующие сообщения должны отобразиться на экране не дожидаясь пока первое запишется. Сейчас последующие сообщения начинают отображаться только через 5 сек. Как данную конструкцию скорректировать под необходимую логику? |