Python 3.6+inspectфункция
inspect.isasyncgenfunction()
корутины и генераторы
Проверяет, что объект — функция асинхронного генератора: async def, в теле которой есть yield.
Синтаксис
inspect.isasyncgenfunction(object) -> bool
Такая функция — не корутинная: iscoroutinefunction даёт False, и await для результата невозможен — по нему ходят через async for. Перепутать легко, если обёртка-декоратор проверяет только iscoroutinefunction: асинхронный генератор она пропустит как обычную функцию. isgeneratorfunction для неё тоже False.
Примеры
import asyncio, inspect
async def ticks(n):
for i in range(n):
yield i
print(inspect.isasyncgenfunction(ticks)) # → True
print(inspect.iscoroutinefunction(ticks), inspect.isgeneratorfunction(ticks)) # → False False
async def main():
return [i async for i in ticks(3)]
print(asyncio.run(main())) # → [0, 1, 2]
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности