Python Glossary English

Python 3.7+sysфункция

sys.set_coroutine_origin_tracking_depth()

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

Включает запоминание места создания корутин: столько кадров стека сохраняется в cr_origin. 0 выключает. Помогает найти забытый await.

Синтаксис

sys.set_coroutine_origin_tracking_depth(depth)

Предупреждение «coroutine ... was never awaited» само по себе не говорит, где корутина создана; с глубиной больше нуля оно показывает это место. Режим отладки asyncio (asyncio.run(main(), debug=True) или PYTHONASYNCIODEBUG=1) включает его сам. Глубина действует на текущий поток и замедляет создание каждой корутины; отрицательное значение — ValueError.

Примеры

import sys
async def job():
    return 1
sys.set_coroutine_origin_tracking_depth(1)
c = job()
print(c.cr_origin[0][1:])  # → (5, '<module>') — строка и функция создания
c.close()
sys.set_coroutine_origin_tracking_depth(0)
print(sys.get_coroutine_origin_tracking_depth())  # → 0

См. также

Частые ошибки

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