ContextVar¶
Что это?¶
ContextVar, как бы странно не звучало, это переменная контекста. Это такие переменные которые умееют сохранять и передавать свое состояние в другие корутины/потоки. Часто контекстные переменные используют для реализации трассировки/профилирования запросов, которые проходят сквозь обработчики.
Концепция аналогична TLS (thread local storage), но в отличии от TLS контекстные переменные умеют правильно работать с асинхронными задачами.
Выглядят они так:
Важно
Переменные контекста следует создавать на верхнем уровне модуля, а не в замыканиях. Объекты контекста содержат "сильные" ссылки на переменные контекста, что предотвращает сборку мусора для этих переменных.
Важно
Изменения контекстной переменной внутри генератора не будут видны в вызывающем коде.