Начиная с Python 3.7, модуль contextlib
предоставляет декоратор asynccontextmanager
, который позволяет определять асинхронные контекстные менеджеры точно так же, как contextmanager
:
import asyncio
from contextlib import asynccontextmanager
@asynccontextmanager
async def slow(delay):
half = delay / 2
await asyncio.sleep(half)
yield
await asyncio.sleep(half)
async def main():
async with slow(1):
print('slow')
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
Для более старых версий Python можно использовать
@asyncio_extras.async_contextmanager
.👉@BookPython
>>Click here to continue<<