Встречается на собеседованиях • сегодня

Как создать асинхронный контекстный менеджер

В Python асинхронный контекстный менеджер создается с помощью магических методов __aenter__ и __aexit__. Класс с этими методами можно использовать в async with.

Пример:

python
import asyncio

class AsyncContextManager:
    async def __aenter__(self):
        print("Entering context")
        await asyncio.sleep(1)
        return self
    
    async def __aexit__(self, exc_type, exc_val, exc_tb):
        print("Exiting context")
        await asyncio.sleep(1)

async def main():
async with AsyncContextManager() as cm:
print("Inside context")

asyncio.run(main())

text

Также можно использовать `contextlib.asynccontextmanager` для создания асинхронного генераторного контекстного менеджера:
```python
from contextlib import asynccontextmanager

@asynccontextmanager
async def async_context():
    print("Enter")
    await asyncio.sleep(1)
    yield "resource"
    print("Exit")

async def main():
    async with async_context() as res:
        print(f"Using {res}")

asyncio.run(main())
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы