Как эффективно внедрить сессии в GAE? - PullRequest
12 голосов
/ 25 октября 2008

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

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

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

Ответы [ 3 ]

5 голосов
/ 21 марта 2011

ОБНОВЛЕНИЕ - 21 марта 2011

На момент ответа app-engine-patch более не поддерживается и gaeutilities предлагают худшие возможности , чем gae-сессий .

3 голосов
/ 25 октября 2008

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

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

0 голосов
/ 03 ноября 2008

Если вы используете 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...