from aiohttp import web import asyncio async def ws_handler(request): ws_resp = web.WebSocketResponse() await ws_resp.prepare(request) while True: await ws_resp.send_str('1 min') await asyncio.sleep(60) while True: await ws_resp.send_str('10 sec') await asyncio.sleep(10) async for msg in ws_resp: await ws_resp.send_str(msg.data) return ws_resp gpro_app = web.Application() gpro_app.router.add_get('/ws', ws_handler)
Работает и отправляет сообщения только первый блок while True. Я понимаю, что он блокирует то, что идет ниже, но не знаю, как сделать так, чтобы все три блока (первый while True, второй while True и async for) работали одновременно, не мешая друг другу. Есть еще важный момент, нужно, чтобы эти блоки были привязаны к обработчику ws_handler в том смысле, что когда обработчик завершался, то эти три блока также заканчивали свою работу.