Sobes.tech
Back to questions
Junior — Middle
65

Каким образом реализовать асинхронный менеджер контекста для управления ресурсами в асинхронных программах?

Answer from AI

sobes.tech AI

В Python для реализации асинхронного менеджера контекста используется протокол асинхронного контекстного менеджера с методами __aenter__ и __aexit__. Это позволяет управлять ресурсами в асинхронном коде, например, открывать и закрывать соединения или файлы.

Пример асинхронного менеджера контекста:

class AsyncResource:
    async def __aenter__(self):
        print("Открытие ресурса")
        # Инициализация ресурса, например, открытие соединения
        return self

    async def __aexit__(self, exc_type, exc, tb):
        print("Закрытие ресурса")
        # Освобождение ресурса, например, закрытие соединения


import asyncio

async def main():
    async with AsyncResource() as resource:
        print("Использование ресурса")

asyncio.run(main())

Такой подход гарантирует, что ресурс будет корректно освобожден даже при возникновении исключений внутри блока async with.