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





Я предлагаю проверить (и внести свой вклад) в эти три реализации сеансов appengine, прежде чем развертывать свои собственные:
Ваши варианты выглядят хорошо, но выбор между ними, вероятно, зависит от размера данных сеанса в вашем приложении.
Еще одно, что следует учитывать: gae-sessions - самая быстрая и простая доступная реализация. Сравнение доступных библиотек здесь: wiki.github.com/dound/gae-sessions/…
Если вы используете web2py (версия 1.46 или новее), сеансы в GAE по умолчанию включены. Это достигается с помощью следующих трех строк кода web2py в верхней части модели скаффолдинга:
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)
ОБНОВЛЕНИЕ - 21 марта 2011 г.
На момент этого ответа app-engine-patch больше не поддерживается и утилитыпредлагать худшие черты, чем gae-sessions.
@ Александр Кожевников: Похоже, ссылка appengine-utilities не работает.