2008-10-24 5 views
12

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

  1. Сохранение всех данных сессии в куки
  2. Writing все данные сессии в хранилищу данных и кэшу, а затем только чтение из кэша памяти

Любой есть какие-то другие идеи?

ответ

3

я предлагаю проверить (и способствуя) этих трех реализаций Appengine сессий перед развертыванием самостоятельно:

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

+1

@Alexander Кожевников: Похоже, AppEngine-коммунальные услуги ссылка сломана. – 2009-09-29 23:29:54

0

Если вы используете 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)