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

Можно ли создать асинхронный контекстный менеджер в Python

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

Пример:

python
import asyncio

class AsyncContextManager:
    async def __aenter__(self):
        print("Entering async context")
        return self
    
    async def __aexit__(self, exc_type, exc, tb):
        print("Exiting async context")

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

asyncio.run(main())

text

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

@asynccontextmanager
async def async_manager():
    print("Entering")
    yield
    print("Exiting")

async def main():
    async with async_manager():
        print("Inside")

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

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

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

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