Django теряет данные сеанса

#django #session

Вопрос:

Это очень странное явление, которое я наблюдаю. Мой сайт работает нормально большую часть времени. Но время от времени (в одном и том же сеансе) некоторая информация о сеансе не сохраняется.

я добавил в конце своего представления:

 request.session.modified = True  

и в моих настройках добавлено:

 SESSION_SAVE_EVERY_REQUEST = True  

Также попробовал в представлении:

 request.session.save()  

И все равно — ничего не помогает. Время от времени информация о сеансе не сохраняется. я смотрю на базу данных и вижу, что она действительно не сохранена.

я использую сеанс django с cached_db и PickleSerializer. Есть идеи?

Чтобы ответить на Iain — Ниже приведены полные настройки сеанса. но я также попробовал использовать сеанс на основе файлов — те же результаты.

 SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer' SESSION_EXPIRE_AT_BROWSER_CLOSE = True SESSION_SAVE_EVERY_REQUEST = True CACHES = {  'default': {  'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',  }  

}

также пробовал с другими настройками кэша или без настроек, используя настройки по умолчанию:

 CACHES = {  'default': {  'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',  'LOCATION': '127.0.0.1:11211',  } }  

Взгляд на это потерял в себе логику. Все заканчивается тем, что:

 request.session.modified = True my_logger.debug('question_list is %s' % request.session.get('question_list')) # the list exists  return HttpResponse(template_block)  

Комментарии:

1. Можете ли вы привести пример просмотра и путешествия пользователя, в котором сеанс не сохраняется?

2. Его часть сложной сессии… Я постараюсь изложить суть дела. Сайт является образовательным сайтом для преподавателей и студентов. Один из потоков, где это происходит, — это когда студент начинает новую «игру». система выбирает вопросы для использования и сохраняет список в массиве во время сеанса. Затем каждый раз, когда студенты нажимают «далее», следующий вопрос в списке, если он отображается. я сохраняю в сеансе список вопросов, номер вопроса в игре, идентификатор игры и многое другое. Иногда список вопросов не сохраняется (в журнале я вижу, что список был обновлен).

3. Можете ли вы добавить это представление к вопросу? Можете ли вы также добавить настройки сеанса?

4. Как развертывается ваше приложение? У вас есть несколько работников/процессов, и вы их используете LocMemCache ?

5. я попробовал разные варианты кэширования (на самом деле, я обычно работаю с memcache) -я добавил это к вопросу. Развертывание представляет собой докер, работающий в Ubuntu.