Проблемы с запуском gae-сессий в App Engine, ошибка не помогает - PullRequest
0 голосов
/ 25 января 2011

Я установил gae-session в свою среду разработки, но, похоже, ничего не хранит Вот базовый пример:

session = get_current_session()
session.get('some_num', 3)

Затем в другой функции ...

session = get_current_session()
session['some_num'] = 4

И вот ошибка, которую я получаю в консоли:

KeyError: 'some_num'

Не очень полезная ошибка. Я почти уверен, что следовал инструкциям к письму, но, может быть, я что-то упустил?

редактировать

appengine_config.py

from gaesessions import SessionMiddleware
import os

def webapp_add_wsgi_middleware(app):
    app = SessionMiddleware(app, os.urandom(32))
    return app

Оскорбительный код

class Test(webapp.RequestHandler):
    def get(self):
        session = get_current_session()
        if session.is_active():
            # set session['some_num'] to whatever was in there or three, otherwise
            session['some_num'] = session.get('some_num', 3) 

            # later, session['some_num'] should exist and be equal to 3 ...
            assert session['some_num'] == 3

            # ... and is actually 'settable'
            session['some_num'] = 4
        else:
            self.response.out.write("Session is NOT active")

.is_active () не возвращает true.

Ответы [ 2 ]

2 голосов
/ 25 января 2011

Глядя на пример приложения ( здесь ), выясняется, что все сеансы начинаются неактивными и автоматически устанавливаются на активные при первом сохранении для них значения. Вы должны просто иметь возможность сохранить значение для сеанса с помощью session['foo'] = 'bar', и он автоматически активирует сеанс.

Также обратите внимание, что вы не должны генерировать ключ cookie таким образом. Как показывают документы в примере appengine_config.py :

# suggestion: generate your own random key using os.urandom(64)
# WARNING: Make sure you run os.urandom(64) OFFLINE and copy/paste the output to
# this file.  If you use os.urandom() to *dynamically* generate your key at
# runtime then any existing sessions will become junk every time you start,
# deploy, or update your app!
0 голосов
/ 25 января 2011

В вашем коде (как он есть) вы не добавляете some_num в свой сессионный словарь. Попробуйте:

from gaesessions import get_current_session
session = get_current_session()
if session.is_active():
    # set session['some_num'] to whatever was in there or three, otherwise
    session['some_num'] = session.get('some_num', 3) 
...

# later, session['some_num'] should exist and be equal to 3 ...
assert session['some_num'] == 3

# ... and is actually 'settable'
session['some_num'] = 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...