Spec-Zone.ru › Werkzeug 3.0

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

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

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

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

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

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

Spec-Zone.ru

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