Я пытаюсь научиться делать переменную доступной через метод с помощью функции декоратора во Flask.
Я прочитал Контекстную документацию запроса Flask и написал следующий код, который работает как задумано.
a.py
_request_ctx_stack.top.current_identity = payload.get('sub')
b.py
current_identity = getattr(_request_ctx_stack.top, 'current_identity', None)
Однако flask-jwt решает эту проблему путем введения дополнительного local proxy
вот так:
a.py
from werkzeug.local import LocalProxy
current_identity = LocalProxy(lambda: getattr(_request_ctx_stack.top, 'current_identity', None))
_request_ctx_stack.top.current_identity = payload.get('sub')
b.py
from a import current_identity
Почему?Я прочитал документацию о локальных контекстных контекстах werkzeug и разве Flask уже не реализует локальные контекстные контексты Werkzeug для объекта запроса?
Есть ли преимущество от введения LocalProxy
?