Python Glossary English

Python 3.6+sysфункция

sys.get_asyncgen_hooks()

асинхронность

Возвращает хуки асинхронных генераторов (firstiter, finalizer), которые ставит цикл событий, — чтобы закрывать брошенные async-генераторы.

Синтаксис

sys.get_asyncgen_hooks()

Вне цикла событий оба поля — None; внутри asyncio.run() их ставит сам asyncio. Именно поэтому async-генератор, брошенный посреди async for, не теряет свой finally: хук finalizer ставит его aclose() в цикл событий, а дожившие до конца закрывает loop.shutdown_asyncgens(). Пишущим прикладной код эти хуки не нужны — они для авторов своих циклов событий.

Примеры

import asyncio, sys
print(sys.get_asyncgen_hooks().firstiter)  # → None
async def main():
    hooks = sys.get_asyncgen_hooks()
    print(hooks.firstiter is not None, hooks.finalizer is not None)
asyncio.run(main())  # → True True

См. также

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