Python 3.7+contextvarsterm
contextvars.Token
context variables
The object returned by ContextVar.set(): it remembers the previous value and is used to roll it back with reset().
Syntax
token = var.set(value); var.reset(token)
reset(token) restores the value from before set(), and if there was none it makes the variable empty again — a plain set(old) cannot do that. A token is single-use: a second reset() raises RuntimeError, and a token from another context raises ValueError. old_value is Token.MISSING when there was no value. Since Python 3.14 a token is a context manager: with var.set(x): rolls the value back for you.
Examples
import contextvars
level = contextvars.ContextVar('level', default='info')
token = level.set('debug')
print(level.get()) # → debug
level.reset(token)
print(level.get()) # → info
try:
level.reset(token)
except RuntimeError:
print('токен уже использован') # → токен уже использован
# Python 3.14+
import contextvars
level = contextvars.ContextVar('level', default='info')
with level.set('debug'):
print(level.get()) # → debug
print(level.get()) # → info
See also
Open in the full glossarydocs.python.orgReport an inaccuracy