un1t
@un1t

Asyncio / aiopg — как получить connection из корутины?

В aiopg есть вот такой пример:

async with create_engine(user='aiopg',  database='aiopg', host='127.0.0.1', password='passwd') as engine:
    async with engine.acquire() as conn:
        await conn.execute(tbl.insert().values(val='abc'))


А как в своей корутине получить conn, не копипастя эту портянку в каждкую корутину? Ну и пул соединений конечно должен создаваться один раз, а не в каждой корутине свой.
  • Вопрос задан
  • 1151 просмотр
Решения вопроса 1
async def some_coro(engine: aiopg.sa.Engine):
    async with engine.acquire() as conn:
        await conn.execute(query)

loop = asyncio.get_event_loop()
engine = loop.run_until_complete(aiopg.sa.create_engine(db_url, loop=loop))
loop.run_until_complete(some_coro(engine=engine))
engine.close()
loop.run_until_complete(engine.wait_closed())
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы