Python 3.12+inspectфункция
inspect.getasyncgenstate()
корутины и генераторы
Состояние асинхронного генератора строкой: AGEN_CREATED, AGEN_RUNNING, AGEN_SUSPENDED или AGEN_CLOSED. Появилась в 3.12.
Синтаксис
inspect.getasyncgenstate(agen)
Асинхронный генератор — это async def с yield, и ни getgeneratorstate, ни getcoroutinestate к нему не подходят. Закрывают его await agen.aclose(), а не close(): у асинхронного генератора синхронного close() нет. До 3.12 состояние приходилось выводить из ag_running и ag_frame вручную.
Примеры
import asyncio, inspect
async def numbers():
yield 1
yield 2
async def main():
agen = numbers()
print(inspect.getasyncgenstate(agen))
print(await anext(agen), inspect.getasyncgenstate(agen))
await agen.aclose()
print(inspect.getasyncgenstate(agen))
asyncio.run(main()) # → AGEN_CREATED / 1 AGEN_SUSPENDED / AGEN_CLOSED
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности