Сообщить об ошибке.

Класс ContextVar() модуля contextvars в Python

Переменные контекста модуля contextvars

Синтаксис:

import contextvars

var = contextvars.ContextVar(name[, *, default])

Параметры:

  • name - имя переменной, используемое в контексте,
  • default - значение переменной по умолчанию.

Возвращаемое значение:

Описание:

Класс ContextVar() модуля contextvars используется для объявления новой контекстной переменной, например:

var: ContextVar[int] = ContextVar('var', default=42)

Обязательный аргумент name используется для самоанализа и отладки.

Необязательный ключевой аргумент default, возвращается методом ContextVar.get(), если в текущем контексте не найдено значение для переменной.

Важно: переменные контекста следует создавать на верхнем уровне модуля, а не в замыканиях. Объекты контекста содержат "сильные" ссылки на переменные контекста, что предотвращает сборку мусора для этих переменных.

Пример использования смотрите в обзоре модуля contextvars.

Атрибуты и методы контекстной переменной.


ContextVar.name:

Атрибут ContextVar.name представляет собой имя переменной и доступен только для чтения.

ContextVar.get([default]):

Метод ContextVar.get() возвращает значение переменной контекста для текущего контекста.

Если для переменной в текущем контексте нет значения, то метод будет:

  • возвращает значение аргумента метода default, если он указан;
  • возвращать значение default для переменной контекста, если она была создана в конструкторе;
  • вызывать исключение LookupError.

ContextVar.set(value):

Вызов метода ContextVar.set() установит новое значение для переменной контекста в текущем контексте.

Обязательный аргумент value - это новое значение контекстной переменной.

Возвращает объект contextvars.Token, который можно использовать для восстановления переменной до ее предыдущего значения с помощью метода ContextVar.reset().

ContextVar.reset(token):

Метод ContextVar.reset() сбрасывает контекстную переменную до значения, которое она имела до того, как был использован метод ContextVar.set(), создавший токен.

var = ContextVar('var')

token = var.set('new_value')
...
# здесь будет код, использующий 'var'; 
# метод var.get() возвращает 'new_value'.
...
var.reset(token)

# После вызова var.reset(), переменная 'var' не будет 
#  иметь значения, т.к. задана только в контексте
# а вызов var.get() вызовет `LookupError`.