GaeUtilities: проблема сессии - PullRequest
1 голос
/ 20 июля 2010

Я программирую приложение с помощью google app engine, с django 1.1 (без django pacth или других), и, как вы знаете, невозможно использовать функции входа в систему и сеанса django, поэтому я загружаю Gae утилита и использовать Session Object (http://gaeutilities.appspot.com/), но когда-то этот объект создает 2 сессии вместо 1 сессии ... вот код

def index(request):

     aSWrap = SWrap(SWrap.createSession())
     ....
      def login(request):

     aSWrap = SWrap(SWrap.createSession())
     ....


      class SWrap(object):

   @classmethod    
   def createSession():

     return Session(cookie_name='my_cookie',session_expire_time=7200)

и для установки сеанса нет срока действия или действительно длинного срока действия ... enter code here Спасибо

Ответы [ 3 ]

4 голосов
/ 06 декабря 2010

Судя по коду, вы вызываете createsession дважды в рамках одного запроса.Это также вызовет проблемы с библиотекой Дэвида.

Кроме того, сеанс gaeutilties включал файл конфигурации, в котором вы можете изменять все значения по умолчанию, как вам нравится.

https://github.com/joerussbowman/gaeutilities/blob/master/appengine_utilities/settings_default.py

сеанс gaeutilities также имеет функции безопасности, которых нет в gae-sessions.Боюсь, Дэвид не пытался ответить на ваш вопрос, а просто предложил вам использовать его библиотеку, которая в вашей текущей реализации будет иметь точно такую ​​же проблему.Вы должны быть уверены, что инициируете сеанс только один раз для запроса http, независимо от того, какую библиотеку сеансов вы используете.

Я перемещаю сеанс gaeutilities в декоратор, чтобы также решить эту проблему и обеспечить лучшееспектакль.Вы можете посмотреть ветку master на Github для получения обновлений.https://github.com/joerussbowman/gaeutilities

3 голосов
/ 20 июля 2010

Я предлагаю использовать другую библиотеку сессий.Посмотрите это сравнение доступных библиотек сессий для GAE .

Я бы порекомендовал gae-сессий - он представляет API, почти идентичный библиотеке, в которой вы сейчас находитесьиспользуя, но это намного быстрее и не должно вызывать у вас головную боль, такую ​​как ошибка, с которой вы столкнулись выше.

Отказ от ответственности: я написал gae-сессии, но я не единственный, кто рекомендовал бы это.Вот недавняя ветка обсуждения в группе Google для GAE python.

0 голосов
/ 20 июля 2010

Что вы пытаетесь сделать с SWrap(SWrap.createSession())? Похоже, что результат SWrap.createSession() передается конструктору SWrap(). Вы пропустили часть определения SWrap?

Возможно, это больше, чем вы хотите:

def index(request):
    mysession = SWrap.createSession()
    ....

def login(request):
    mysession = SWrap.createSession()
    ....

class SWrap(object):
    @staticmethod    
    def createSession():
        return Session(cookie_name='my_cookie',session_expire_time=7200)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...