Spec-Zone.ru › Werkzeug 2.3

Локальные переменные контекста

Возможно, у вас есть данные, необходимые для использования в каждой функции во время запроса. Вместо того, чтобы передавать их аргументами в каждую функцию, вы можете получить к ним доступ как к глобальным данным. Однако, использование глобальных переменных в веб-приложениях Python не безопасно в многопоточных средах; разные рабочие процессы могут вмешиваться в данные друг друга.

Вместо хранения общих данных во время запроса с помощью глобальных переменных, необходимо использовать локальные переменные контекста. Локальная переменная контекста определяется/импортируется глобально, но данные, которые она содержит, специфичны для текущей потока, задачи asyncio или greenlet. Вы случайно не получите или не перезапишете данные другого рабочего процесса.

Текущий подход к хранению данных на основе контекста в Python — это модуль contextvars. Переменные контекста хранят данные на основе потока, асинхронной задачи или greenlet. Это заменяет более старую threading.local, которая обрабатывала только потоки.

Werkzeug предоставляет оболочки вокруг ContextVar, чтобы облегчить работу с ними.

© 2007–2022 Pallets
Licensed under the BSD 3-clause License.
https://werkzeug.palletsprojects.com/en/2.3.x/local/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API