Werkzeug Local получил неожиданное значениеPython

Программы на Python
Anonymous
Werkzeug Local получил неожиданное значение

Сообщение Anonymous »

Возможно, меня неправильно поняли с werkzeug.local
Вот мой упрощенный тестовый код:

Код: Выделить всё

from flask import Flask, request
from werkzeug.local import Local
import threading

app = Flask(__name__)

local_data = Local()

@app.route('/')
def index():
if local_data.data:
# I don't know why new request without token will get token and return here.
return local_data.data
local_data.data = request.headers.get('token')
return local_data.data

if __name__ == "__main__":
app.run()
На самом деле моя логика такова: когда приходит запрос, он сначала выполняет получение. Если он не получает значение из local_data.data, он устанавливает токен в local_data.data и возвращает его. Однако я заметил, что в одновременных условиях новый поступивший запрос получит контент, к которому у него не должно быть доступа.
Я ожидаю, что только первый запрос будет содержать токен, а остальные запросы должны возвращать None, поскольку в их локальном потоке ничего нет.
Однако в ходе непрерывных наблюдений я обнаружил, что многие запросы успешно извлекали значение, хранящееся в local_data.data, это означает, что local_data здесь не работает.
Я не знаю почему, а GPT говорит, что в моем коде не должно быть ошибок...

Подробнее здесь: https://stackoverflow.com/questions/787 ... cted-value

Вернуться в «Python»