我喜欢 CherryPy 的会话 API,除了一个细节。而不是说cherrypy.session["spam"]
我想能够说session["spam"]
。
不幸的是,我不能简单地from cherrypy import session
在我的一个模块中使用全局变量,因为cherrypy.session
直到第一次发出页面请求时才会创建该对象。有没有办法让 CherryPy 立即初始化其会话对象,而不是在第一页请求上?
如果答案是否定的,我有两个丑陋的选择:
首先,我可以做这样的事情
def import_session():
global session
while not hasattr(cherrypy, "session"):
sleep(0.1)
session = cherrypy.session
Thread(target=import_session).start()
这感觉就像一个大杂烩,但我真的很讨厌cherrypy.session["spam"]
每次都写,所以对我来说这是值得的。
我的第二个解决方案是做类似的事情
class SessionKludge:
def __getitem__(self, name):
return cherrypy.session[name]
def __setitem__(self, name, val):
cherrypy.session[name] = val
session = SessionKludge()
但这感觉就像一个更大的kludge,我需要做更多的工作来实现其他字典功能,例如.get
所以我肯定更喜欢一种简单的方法来自己初始化对象。有谁知道如何做到这一点?