async with
В Python ключевое слово with используется для управления ресурсами, обеспечивая корректное открытие и закрытие файлов, сетевых соединений, блокировок и других ресурсов. Аналогичным образом, в асинхронном программировании на Python можно использовать async with для управления асинхронными ресурсами.
Определение асинхронного контекстного менеджера
Асинхронные контекстные менеджеры должны реализовывать методы __aenter__ и __aexit__. Эти методы аналогичны __enter__ и __exit__ в обычных контекстных менеджерах, но они являются асинхронными и должны возвращать объекты, которые поддерживают асинхронные операции.
Обычно вы не будете писать собственные менеджеры контекста, а будете пользоваться уже готовыми из разных библиотек.
Например, асинхронные запросы к сайтам через библиотеку aiohttp используют асинхронные менеджеры контекста.
import asyncio import aiohttp async def main(): async with aiohttp.ClientSession() as session: async with session.get('https://httpbin.org/get') as resp: print(resp.status) print(await resp.text()) asyncio.run(main())