Проблема в том, что всякий раз, когда извлекается переменная сеанса, она содержит только свое начальное значение 0%. Если я заменю переменную сеанса глобальной переменной, все будет работать нормально, но приложению необходимо поддерживать несколько одновременных пользователей, поэтому я не могу использовать глобальную переменную. Насколько я понимаю, переменные сеанса предназначены именно для этой цели - сохраняться между запросами в рамках одного сеанса, но я, должно быть, что-то упускаю, потому что здесь этого не происходит.
Вот упрощенный вариант версия моего кода Flask:
Код: Выделить всё
@app.route("/task")
def task():
session["load_percent"] = 0
percent = 0
for i in range(10000000):
#actual task performed here
old_percent = percent
percent = round(i / 10000000 * 100)
if old_percent != percent:
session["load_percent"] = percent
print("Actual percentage: " + str(session["load_percent"]))
#this prints the correct value of the session variable
return "{}"
@app.route("/get_load_percent")
def get_load_percent():
try:
print("Retrieved percentage: " + str(session["load_percent"]))
#this always prints 0
return json.dumps({"load_percent": session["load_percent"]})
except (KeyError):
return "{}"
Код: Выделить всё
function startTask() {
$.ajax({
type: "GET",
url: $('body').data('task'),
dataType: 'json',
success: function(response) {
//respond to task completion here
}
});
let percentageHTML = "";
let percentageInterval = setInterval(function() {
$.ajax({
type: "GET",
url: $('body').data('getloadpercent'),
dataType: 'json',
success: function(response) {
percentageHTML = response["load_percent"];
console.log(percentageHTML);
//always prints 0
}
})
}, 100);
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... x-requests