import contextlib @contextlib.asynccontextmanager
Функция asynccontextmanager()
модуля contextlib
является декоратором, который можно использовать для определения фабричной функции для асинхронного управления с помощью оператора асинхронного контекста async with
без необходимости создавать класс или отдельные методы __aenter__()
и __aexit__()
.
Функция contextlib.asynccontextmanager()
аналогична функции contextlib.contextmanager()
, но создает асинхронный менеджер контекста, который должен применяться к функции асинхронного генератора.
from contextlib import asynccontextmanager @asynccontextmanager async def get_connection(): conn = await acquire_db_connection() try: yield conn finally: await release_db_connection(conn) async def get_all_users(): async with get_connection() as conn: return conn.query('SELECT ...')