Python 3.7+contextvarsпонятие
contextvars
модуль
Контекстные переменные: значение, своё у каждой асинхронной задачи и каждого контекста.
Синтаксис
import contextvars
Модуль нужен, когда в асинхронном коде требуется аналог глобальной переменной — идентификатор запроса, текущий пользователь, — не перемешивающийся между задачами. threading.local для этого не годится: все корутины одного потока делят его значение. Значение меняют через set, а откатывают через reset с полученным токеном; каждая задача asyncio получает копию контекста.
Примеры
import contextvars
user = contextvars.ContextVar('user', default='гость')
token = user.set('Аня')
print(user.get()) # → Аня
user.reset(token)
print(user.get()) # → гость
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности