Подтвердить что ты не робот

Как эффективно выполнять сеансы в GAE?

Мне было интересно, как реализовать свои собственные сеансы (больше для упражнений, чем что-либо еще) для приложения GAE, в котором я работаю... Сначала я думал использовать хранилище данных для хранения данных сеанса. Однако каждый раз, когда что-то нужно добавить в "ведро" сеанса, это потребует сохранения в хранилище данных. Очевидно, что это плохо, поскольку мы хотим минимизировать наши записи. Затем я подумал об использовании memcache... казалось хорошей идеей, но потом мы столкнулись с проблемами возможного срыва сеанса из-за того, что Google memcache "вытесняется давлением памяти". Значит, это означает, что у нас остались только следующие параметры:

  • Сохранение всех данных сеанса в файлах cookie
  • Запись всех данных сеанса в хранилище данных и memcache, а затем чтение только из memcache

У кого-нибудь есть другие идеи?

4b9b3361

Ответ 1

Я предлагаю проверить (и внести вклад) в эти три реализации сеансов appengine, прежде чем выкладывать свои собственные:

Ваши варианты выглядят прекрасно, но выбор между ними, вероятно, зависит от размера данных сеанса в вашем приложении.

Ответ 3

Если вы используете web2py (версии 1.46 или последний), сеансы по умолчанию включены в GAE. Это достигается следующими тремя строками кода web2py в верхней части модели scaffoling:

from gluon.contrib.gql import *
db=GQLDB()
session.connect(request,response,db=db)

Вот пример действия, которое считается:

def index():
    session.c=session.c+1 if session.c else 1
    return dict(counter=session.c)