Python Glossary English

Python 3.6+collectionsпонятие

collections.abc.AsyncGenerator

collections.abc — протоколы

Протокол асинхронного генератора: async-итератор с asend/athrow/aclose.

Синтаксис

isinstance(obj, collections.abc.AsyncGenerator)

Проверка здесь структурная: наследовать ABC не нужно, достаточно наличия __aiter__, __anext__, asend, athrow и aclose, так что True скажет и любой самописный класс с этим набором. Главная практическая грабля не в проверке, а в самом объекте: вызов ag() ничего не выполняет, тело стартует только при async for внутри запущенного event loop, а если выйти из цикла через break, блоки finally отработают не сразу — закрывайте явно через aclose() или contextlib.aclosing.

Примеры

import collections.abc as abc
async def ag():
    yield 1
print(isinstance(ag(), abc.AsyncGenerator))   # → True

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности