在Google App Engine上通过Bottle启用Beaker SessionMiddleware

1 投票
1 回答
513 浏览
提问于 2025-04-18 10:01

我正在尝试在我的基于Bottle的GAE应用中使用Beaker来处理会话。问题是我需要在这里把“app”作为应用来运行。

session_opts = {
    'session.type': 'ext:google',
    'session.auto': True,
}

app = beaker.middleware.SessionMiddleware(bottle.app(), session_opts)

然后调用

bottle.run(app=app)

但是我不能这样做,因为在示例Bottle应用中提到:

# Note: We don't need to call run() since our application is embedded within
# the App Engine WSGI application server.

所以我想问的是,如何才能用Beaker的会话中间件来运行服务器呢?

1 个回答

1

好的,我找到了问题的原因 - 感谢你让我思考,Gianni。基本上,我在代码中有

- url: .*
  script: main.bottle

这段代码的意思是,GAE(谷歌应用引擎)把我在main.py里的bottle变量当成了“应用”。所以当我改成这样的时候:

from bottle import app, route, hook...

session_opts = {
    'session.type': 'ext:google',
    'session.auto': True,
}

bottle = beaker.middleware.SessionMiddleware(app(), session_opts)

一切都正常运行了。看来我得多看看应用引擎的文档了。

撰写回答