我最近开始了一个项目,将我们的 web 应用程序从 apache + Mod_python 迁移到cherry-py。
我仍然需要做很多事情,但就目前而言,CherryPy 的课程让我有点头疼。
我的第一个问题是它们是如何工作的?
在 Mod_python 中,我们这样做:
...
from mod_python import Session
sess = Session.Session(req, timeout = 60*60, lock=0)
#req is the request page object.
从 CherryPy 文档来看,启动会话所需要做的就是通过添加以下内容来修改配置:
cherrypy.config.update({
'tools.sessions.on': True,
'tools.sessions.storage_type': 'ram'})
以上默认为 60 分钟(尽管您可以手动设置自己的时间),但如果我想销毁该会话并创建一个新会话怎么办?是否,我调用cherrypy.lib.sessions.expire()
任何任意文件,然后cherrypy.config.update
再次执行此操作?或者,CherryPy 会自己创建一个新会话吗?如果我想创建一个具有不同到期时间的新会话怎么办?
注意:当我说任意文件时,我的意思是一个没有运行 CherryPy 的文件(我的“配置”文件从我们的其他页面导入并获取 html,就像 Mod_Python 附带的标准 Publisher 一样)。
我尝试制作一个快速的小测试文件:
import cherrypy
from cherrypy.lib import sessions
def index(sid=0, secret=None, timeout=30, lock=1):
cherrypy.session['test'] = 'test'
cherrypy.lib.sessions.expire()
return cherrypy.session.get('test','None')
最终结果是“测试”仍然显示在屏幕上。发生这种情况是因为客户端会话已过期,但本地会话仍有数据吗?在这种情况下,我如何检查会话是否过期?
抱歉这个令人困惑的问题,但我很困惑。
感谢你的帮助!