Как получить результат асинхронной функции (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)
→ Ссылка