Ответ 1
Я предлагаю проверить (и внести вклад) в эти три реализации сеансов appengine, прежде чем выкладывать свои собственные:
Ваши варианты выглядят прекрасно, но выбор между ними, вероятно, зависит от размера данных сеанса в вашем приложении.
Мне было интересно, как реализовать свои собственные сеансы (больше для упражнений, чем что-либо еще) для приложения GAE, в котором я работаю... Сначала я думал использовать хранилище данных для хранения данных сеанса. Однако каждый раз, когда что-то нужно добавить в "ведро" сеанса, это потребует сохранения в хранилище данных. Очевидно, что это плохо, поскольку мы хотим минимизировать наши записи. Затем я подумал об использовании memcache... казалось хорошей идеей, но потом мы столкнулись с проблемами возможного срыва сеанса из-за того, что Google memcache "вытесняется давлением памяти". Значит, это означает, что у нас остались только следующие параметры:
У кого-нибудь есть другие идеи?
Я предлагаю проверить (и внести вклад) в эти три реализации сеансов appengine, прежде чем выкладывать свои собственные:
Ваши варианты выглядят прекрасно, но выбор между ними, вероятно, зависит от размера данных сеанса в вашем приложении.
ОБНОВЛЕНИЕ - 21 марта 2011
Во время этого ответа app-engine-patch прекращается и gaeutilities предлагает худшие возможности, чем gae-sessions.
Если вы используете 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)