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.