Переменная сеанса Flask не сохраняется между запросами AjaxPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Переменная сеанса Flask не сохраняется между запросами Ajax

Сообщение Anonymous »

В моем приложении Flask я пытаюсь отобразить клиенту ход выполнения серверной задачи. Клиент отправляет первоначальный запрос, который запускает задачу. Задача содержит цикл, и по мере его выполнения обновляется переменная сеанса, содержащая процент завершения. Затем клиент регулярно отправляет дополнительные запросы на получение значения переменной сеанса, чтобы его можно было отобразить.
Проблема в том, что всякий раз, когда извлекается переменная сеанса, она содержит только свое начальное значение 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 "{}"
И мой интерфейс JS:

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

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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Переменная сеанса Flask не сохраняется между запросами Ajax
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Переменная сеанса Flask не сохраняется между запросами Ajax
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Переменная сеанса не сохраняется в файле tmp сервера XAMPP, из-за этого мы не можем получить доступ к переменной сеанса
    Anonymous » » в форуме Php
    0 Ответы
    55 Просмотры
    Последнее сообщение Anonymous
  • Переменная состояния сеанса не сохраняется
    Anonymous » » в форуме C#
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Модель Ollama сохраняется в памяти и предотвращает разгрузку между запросами (Keep_alive?)
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous

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