В моем приложении мне нужно выполнить вызов БД после закрытия веб-сокета.Мой обработчик websocket сконфигурирован следующим образом (предположим, foo
- это вызов db):
async def foo():
print('<<<<')
await asyncio.sleep(3.0)
print('>>>>')
async def websocket_handler(request):
await foo()
ws = web.WebSocketResponse()
await ws.prepare(request)
async for msg in ws:
if msg.type == aiohttp.WSMsgType.TEXT:
print(f'received some {msg.data}')
elif msg.type == aiohttp.WSMsgType.ERROR:
print('ws connection closed with exception %s' %
ws.exception())
await foo()
return ws
Первый await foo()
работает как положено.Второй застрял на await asyncio.sleep(3.0)
.Я все еще могу достичь этого, создав задачу для цикла обработки событий, но почему я не могу await
?Я предполагаю, что это как-то связано с ws.prepare()
.