Python3 Flask сеанс не обновляется - PullRequest
0 голосов
/ 28 февраля 2020

Я использую приведенный ниже код для отладки проблемы, когда она не отображается, моя переменная сеанса обновляется правильно.

print(session)
session['review_status'] = 'Pending'
print('Session review_status is now: ' + session['review_status'])
print(session)

Это выводит следующее:

<SecureCookieSession {'review_id': None, 'review_status': 'New'}>
Session review_status is now: Pending
<SecureCookieSession {'review_id': None, 'review_status': 'New'}>

Я не могу понять, почему последний оператор печати не отражает, что значение review_status теперь должно быть «Ожидание», а не «Новое».

Интерфейс запускает около 5 ajax запросов одновременно до этой конечной точки, но первый должен изменить статус на Ожидание, поэтому к тому времени, когда остальные 4 вернутся, для них это будет «Ожидание».

1 Ответ

0 голосов
/ 28 февраля 2020

Похоже, это было вызвано асинхронными вызовами из внешнего интерфейса. При просмотре результатов отладки кажется, что некоторые из вызовов "заканчивались" до того, как сеанс Flask фактически отражал новое сохраненное значение.

Когда я преобразовал вызов ajax в «asyn c: false», я получил ожидаемое поведение после того, как первый вызов завершился (остальные больше не были «Новыми», а скорее в «Ожидании»). «).

Я собираюсь оставить это исправление на месте, но мне было бы интересно узнать об альтернативах этому и получить лучшее понимание того, как Gunicorn / Flask обрабатывает несколько запросов к одной и той же конечной точке одновременно в отношении сеанс (ie: остается ли сеанс постоянным c до тех пор, пока не будут выполнены все вызовы типа вещь).

...