1つの詳細を除いて、セッション用のCherryPyのAPIが大好きです。言う代わりに、cherrypy.session["spam"]
ただ言うことができるようにしたいと思いますsession["spam"]
。
残念ながら、最初にページリクエストが行われるまでオブジェクトが作成されないfrom cherrypy import session
ため、モジュールの1つにグローバルを単純に含めることはできません。cherrypy.session
最初のページのリクエストではなく、CherryPyにセッションオブジェクトをすぐに初期化させる方法はありますか?
答えがノーの場合、私には2つの醜い選択肢があります。
まず、私はこのようなことをすることができます
def import_session():
global session
while not hasattr(cherrypy, "session"):
sleep(0.1)
session = cherrypy.session
Thread(target=import_session).start()
cherrypy.session["spam"]
これは大きな恨みのように感じますが、私は毎回書くのが本当に嫌いなので、それだけの価値があります。
私の2番目の解決策は次のようなことをすることです
class SessionKludge:
def __getitem__(self, name):
return cherrypy.session[name]
def __setitem__(self, name, val):
cherrypy.session[name] = val
session = SessionKludge()
しかし、これはさらに大きな問題のように感じます。次のような他の辞書関数を実装するには、さらに多くの作業を行う必要があります。.get
So I'd definitely prefer a simple way to initialize the object myself. Does anyone know how to do this?