Не могу дождаться ws.prepare - PullRequest
       32

Не могу дождаться ws.prepare

0 голосов
/ 19 сентября 2019

В моем приложении мне нужно выполнить вызов БД после закрытия веб-сокета.Мой обработчик 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().

...