Сообщить об ошибке.

Функция aclosing() модуля contextlib в Python

Синтаксис:

import contextlib

# Новое в версии 3.10.
contextlib.aclosing(thing)

Параметры:

  • thing - асинхронный генератор, требующий освобождения ресурсов.

Возвращаемое значение:

  • асинхронный менеджер контекста.

Описание:

Функция aclosing() модуля contextlib возвращает асинхронный менеджер контекста, который вызывает метод thing.aclose() объекта thing по завершении блока.

Это в основном эквивалентно:

``pythonfrom contextlib import asynccontextmanager

@asynccontextmanagerasync def aclosing(thing):try:yield thingfinally:await thing.aclose()```

Примечательно, что contextlib.aclosing() поддерживает детерминированную очистку асинхронных генераторов, когда они завершаются раньше из-за прерывания [break][break-continue] или исключения. Например:

from contextlib import aclosing

async with aclosing(my_generator()) as values:
    async for value in values:
        if value == 42:
            break

Этот шаблон гарантирует, что асинхронный код выхода генератора выполняется в том же контексте, что и его итерации. Так что исключения и контекстные переменные работают должным образом, а код выхода не запускается по истечении времени существования некоторой задачи, от которой он зависит.

Новое в версии 3.10.