Webapp2会话在请求之间丢失

Mat*_*ert 6 python session google-app-engine webapp2

我正在使用webapp2_extras来设置会话变量.如果我在设置后打印变量,则值是正确的.还会进行save_sessions调用.但是,当我再次发出请求时,未设置变量.

大多数代码都来自webapp2文档:

import webapp2
from webapp2_extras import sessions

class BaseHandler(webapp2.RequestHandler):
    def dispatch(self):
        self.session_store = sessions.get_store(request=self.request)
        try:
            webapp2.RequestHandler.dispatch(self)
        finally:
            self.session_store.save_sessions(self.response)
    @webapp2.cached_property
    def session(self):
        return self.session_store.get_session()

class MainHandler(BaseHandler):
    def get(self):
        foo = self.session.get('foo')
        print foo
        self.session['foo'] = 'bar'
        foo = self.session.get('foo')
        print foo
        self.response.write(BaseHandler)

config = {}
config["webapp2_extras.sessions"] = {
    "secret_key": "key",
}

app = webapp2.WSGIApplication([
    ('/', MainHandler)
], debug=True, config=config)
Run Code Online (Sandbox Code Playgroud)

这总是返回"None something"但我希望它为第二个请求返回"something something".

Pau*_*ood 0

查看我的配置,我用它来设置会话存储的位置(对于应用程序引擎,配置与我理解的标准有点不同)

    @webapp2.cached_property
    def session(self):
      # Returns a session using the default cookie key.
        return self.session_store.get_session(name='mc_session',
        factory=sessions_memcache.MemcacheSessionFactory)
Run Code Online (Sandbox Code Playgroud)

也许尝试一下?否则你的代码对我来说看起来不错,但没有实际运行它。

您还需要导入:

from webapp2_extras import sessions_memcache
Run Code Online (Sandbox Code Playgroud)

Webapp2 Memcache 会话