2012-03-21 13 views
0

CherryPyの古いバージョンでは多くの例が見つかりましたが、それぞれがcherrypy 3.2.2では見つからないモジュールのインポートを参照していました。 Looking in the documentation、私はそこにstorage_type( 'ram'、 'file'、 'postgresql'のいずれか)の機能が組み込まれているという事実への言及を見つけました。あなたはこの男は自分のセッションクラスを書き込み、いくつかのメソッドを上書きする方法CherryPy 3.2.2でMySQLにWebセッションを保存するには?

https://github.com/3kwa/cherrys

を見てみることができ、開始のために

答えて

3

。彼はMySQLではなくredisのためにそれを行います。 MySQLのメソッドを記述します。 "cherrpy/lib/sessions.py"の中にcherrypyには非常に似たクラスが既に存在します。

これはあなたが望むものと非常に似ています。私は、 "3kwa"の実装アプローチを取るが、RedisSessionクラスの代わりに "cherrpy/lib/sessions.py"のPostgresqlSessionクラスをコピーし、適切なMySQL構文と一致するように変更するといいだろう。

ダウンロードリンクの上から「cherrys.py」と「mysqlsession.py」に名前を変更します。

可能なパスがある可能性があります。 "RedisSessions(Session)"を "cherrpy/lib/sessions.py"の "PostgresqlSession(Session)"で上書きし、 "MySQLSession(Session)"に名前を変更します。それはRedisSession(セッション)で行われるように(あなたの新しい「MySQLSession」級に

locks = {} 

def acquire_lock(self): 
    """Acquire an exclusive lock on the currently-loaded session data.""" 
    self.locked = True 
    self.locks.setdefault(self.id, threading.RLock()).acquire() 

def release_lock(self): 
    """Release the lock on the currently-loaded session data.""" 
    self.locks[self.id].release() 
    self.locked = False 

を追加してください。MySQLの-構文を(それは難しいことではありません)と一致するようにPostgreSQLの-構文を変更します。

import mysqlsession 

とアプリケーションのどこかで、あなたのプロジェクトディレクトリとインポートの下に「mysqlsession.py」を入れて、アプリ、あなたの初期化に

cherrypy.lib.sessions.MySQLSession = mysqlsession.MySQLSession 

を使用しています。コンフィグ

tools.sessions.storage_type : 'mysql' 

と、 "PostgreSQL"クラスのようなパラメータ(ホスト、ポートなど)があります。

私は間違っている可能性があります。しかし、これは私がこれを解決しようとする方法です。

関連する問題