Async generators and iterators
Асинхронный генератор - это функция, которая возвращает итератор асинхронного генератора. От обучной сопрограммы (выраженной через async await
) ее отличает то, что в теле функции находится выражение yield
, что позволяет использовать этот объект в конструкциях async for
и async with
.
Асинхронный контекстный менеджер реализует методы __aenter__()
и __aexit__()
и доступен через async with
Итератор асинхронного генератора (asynchronous generator iterator) - это объект, который созадается асинхронным генератором. Вызов его содержимого осуществляется с помощью __anext__()
- возвращаемый объект будет awaitable, который будет выполнять тело функции асинхронного генератора до следующего выражения yield
. Каждый yield
временно приостанавливает обработку, запоминая состояние выполнения местоположения (включая локальные переменные и ожидающие попытки операторов). Когда итератор асинхронного генератора возобновляет работу, он возобновляет работу с того места, где остановился.
Асинхронный итерируемый объект (asynchronous iterable) - объект, котоырй может использоваться в async for
. Должен возвращать асинхронный итератор черпез __aiter__()
метод.
Асинхронный итератор - это объект, для которого имплементированы __aiter__()
и __anext__()
методы. __anext__()
должен возвращать awaitable объект