我喜欢CherryPy的会话API,除了一个细节。我不想说我只想说session["spam"]
。尽早初始化cherrypy.session
不幸的是,我不能简单地在我的模块中有一个全局的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()
这感觉就像一个大的杂牌,但我真的很讨厌写每一次,所以对我来说这是值得的。
我的第二个解决办法是做类似
class SessionKludge:
def __getitem__(self, name):
return cherrypy.session[name]
def __setitem__(self, name, val):
cherrypy.session[name] = val
session = SessionKludge()
但这种感觉就像一个更大的组装机和我需要做更多的工作来实现其他词典功能,如.get
所以我肯定会更喜欢简单的方法来自己初始化对象。有谁知道如何做到这一点?