我最近開始一個項目,將我們的web應用程序從apache + mod_python遷移到cherry-py。我很努力去理解CherryPy中的會話
我仍然需要做很多事情,但現在,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的文件(我的「config」文件導入並從我們的其他頁面獲取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')
最終的結果是,「測試」仍然顯示在屏幕上。發生這種情況是因爲客戶端會話已過期,但本地仍然有數據?在這種情況下,我該如何檢查會話是否過期?
對不起,令人困惑的問題,但我很困惑。
感謝您的幫助!