tezvyn:

Python Async Context Managers

Source: docs.python.orgadvanced

Async context managers let you await during setup and teardown. Use async with for database connections or streams where acquiring and releasing both need I/O. The footgun is applying @contextmanager to async cleanup, which cannot await and will crash.

Async context managers extend the try-finally pattern to resources that require awaiting. They let you pause setup and teardown for I/O, such as opening a database connection or an HTTP session. In Python, you build them with @asynccontextmanager decorating an async generator, or by implementing __aenter__ and __aexit__. The footgun is reaching for @contextmanager instead: it cannot yield control to the event loop during cleanup, so any awaited release call raises a runtime error.

Read the original → docs.python.org

Get five bites like this every day.

Tezvyn delivers a daily feed of 60-second tech bites with quizzes to lock in what you learn.

Python Async Context Managers · Tezvyn