Python 3.6+sysфункция
sys.set_asyncgen_hooks()
асинхронность
Устанавливает хуки асинхронных генераторов: firstiter — при первой итерации, finalizer — когда генератор собирается сборщиком мусора.
Синтаксис
sys.set_asyncgen_hooks(firstiter=..., finalizer=...)
Это интерфейс для авторов циклов событий: asyncio, trio и uvloop ставят хуки сами, а подмена из прикладного кода ломает им закрытие генераторов. Хуки действуют на текущий поток; аргумент можно опустить — тогда тот хук не меняется. Сохраняйте старые хуки и возвращайте их.
Примеры
import sys
seen = []
old = sys.get_asyncgen_hooks()
sys.set_asyncgen_hooks(firstiter=lambda agen: seen.append(agen.__name__))
async def ticks():
yield 1
g = ticks()
step = g.asend(None)
step.close()
sys.set_asyncgen_hooks(*old)
print(seen) # → ['ticks']
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности