Как устроена концепция асинхронных генераторов и какой протокол они используют под капотом?

Асинхронный генератор создаётся функцией async def с yield и выдаёт значения через async for. Он реализует __aiter__ и __anext__; получение следующего элемента возвращает awaitable.

Короткий ответ

Что ответить на собеседовании

Асинхронный генератор создаётся функцией async def с yield и выдаёт значения через async for. Он реализует aiter и anext; получение следующего элемента возвращает awaitable.

Подробный разбор

Ответ с пояснениями

Асинхронный генератор создаётся функцией async def с yield и выдаёт значения через async for. Он реализует aiter и anext; получение следующего элемента возвращает awaitable.

Внутри такого генератора можно ждать сеть через await, затем отдавать очередное значение через yield, не загружая весь поток в память. Конец обхода обозначается StopAsyncIteration. Дополнительно доступны asend(), athrow() и aclose() для управления выполнением и завершением. Выход из async for раньше времени сам по себе не гарантирует немедленную очистку ресурса: жизненный цикл нужно закрывать явно, например через aclosing.

Источник: peps.python.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее