Задать вопрос
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, не копипастя эту портянку в каждкую корутину? Ну и пул соединений конечно должен создаваться один раз, а не в каждой корутине свой.
  • Вопрос задан
  • 1183 просмотра
Подписаться 2 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillfactory
    Профессия Python-разработчик
    9 месяцев
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Решения вопроса 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())
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы