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Сообщить о неточности