Как получить результат асинхронной функции (Python aiosqlite)?
Как можно получить результат result работы асинхронной функции (в переменную его запихнуть, переиспользовать и т.д., как в обычной функции x = func(param)?
Для примера - запрос к БД с помощью aiosqlite.
import aiosqlite
import asyncio
async def db_select(path, expression):
async with aiosqlite.connect(path) as connection:
cursor = await connection.cursor()
await cursor.execute(expression)
result = await cursor.fetchall()
return result
loop = asyncio.get_event_loop()
loop.run_until_complete(db_select) #либо из asyncio.run, asyncio.gather И т.д.
Ответы (1 шт):
Автор решения: eri
→ Ссылка
Два варианта, первый синхронизироваться:
result = loop.run_until_complete(db_select(param,param))
Второй передать результат в колбэк:
def callback(fut):
result = fut.result()
asyncio.ensure_future(db_select(param,param)).add_done_callback(callback)