如何在GAE中使用beaker

2 投票
1 回答
961 浏览
提问于 2025-04-16 17:16

你好,我打算使用自己的会话对象,并尝试在Python中使用Beaker。你能告诉我如何在Google App Engine上使用它吗?我有以下代码,但接下来该怎么做我不太确定:

    session_opts = {
        'session.cookie_expires': True,
        'session.type': 'ext:google',
        'session.key': 'mykey.beaker.session.id',
    }

    def main():
        logging.getLogger().setLevel(logging.DEBUG)

        application = webapp.WSGIApplication([(...
... handlers          ],debug=True)
        application = SessionMiddleware(application, session_opts)

        util.run_wsgi_app(application)

1 个回答

4

根据文档的说明:

一旦SessionMiddleware设置好,就可以在WSGI环境中使用beaker.session来访问会话对象。

在Google App Engine中,你可以通过WebHandler访问beaker会话字典对象,方法是:

session = self.request.environ['beaker.session']

这个会话是一个Python字典,你可以在里面存放数据,方法是:

session['somekey'] = 'foo'

或者用以下方式获取数据:

my_var = session['somekey']

一个简单的计数器示例可能是这样的:

class MainPage(webapp.RequestHandler):
  def get(self):
    session = self.request.environ['beaker.session']

    if 'counter' in session:
       counter = session['counter'] + 1
       session['counter'] = counter
    else:
       session['counter'] = 1

    self.response.out.write('counter: %d' % counter)

撰写回答