Устаревшие хранилища сеансов с webapp2 в GAE для Python

У меня есть приложение GAE Python, которое хранит данные сеанса в объекте SessionStore, полученном с помощью webapp2_extras.sessions.get_store(request=self.request).

Я видел, как сеансы сохранялись в течение нескольких дней, когда я не закрывал браузер, но мне пришло в голову, что как администратор приложения я не могу очистить устаревшие объекты SessionStore на сервере, то есть когда данные пользователя, которые к нему больше никогда не будут обращаться после того, как его или ее браузер будет закрыт.

Является ли это утечкой памяти в моем приложении, работающем на GAE, или у GAE или WEBAPP2 есть какая-то стратегия для распознавания устаревшего сеанса и освобождения этой памяти? Я не могу найти ответ в документах GAE/WEBAPP2, поэтому, если у вас есть ссылка с ответом, буду признателен.


person Lindsay    schedule 23.02.2016    source источник


Ответы (1)


Вы можете настроить срок действия хранилища сеансов с помощью webapp2_extras.sessions.default_config. :

session_max_age: время истечения сеанса по умолчанию в секундах. Ограничивает продолжительность содержимого файла cookie, даже если существует файл cookie сеанса. Если нет, содержимое сохраняется до тех пор, пока действителен файл cookie. По умолчанию нет.

Теперь, если вы хотите самостоятельно обрабатывать истечение срока действия, стратегия распознавания устаревшего сеанса может состоять в том, чтобы сохранить метку времени в файле cookie или данных сеанса и проверять ее при каждом запросе страницы. Если вы хотите завершить сеанс, вызовите self.session.clear() .

person Brent Washburne    schedule 24.02.2016
comment
Извините за мой отрицательный голос, Брент. Мое первоначальное прочтение заключалось в том, что это устанавливает только срок действия файла cookie, особенно с учетом вашего предложения по стратегии, которое, я не верю, работает, поскольку приложение может никогда не получить шанс вызвать clear(). Но при повторном прочтении выясняется, что указанный вами параметр действительно устанавливает время ожидания сеанса на сервере, так что это соответствует моему первоначальному требованию, хотя комментарий к стратегии, похоже, этого не делает. К сожалению, я использовал неправильный голос и не могу изменить его, если вы не внесете какие-либо изменения в свой ответ. Спасибо за помощь и еще раз извините. - person Lindsay; 25.02.2016
comment
Я уточнил вариант стратегии - person Brent Washburne; 25.02.2016