。彼は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"クラスのようなパラメータ(ホスト、ポートなど)があります。
私は間違っている可能性があります。しかし、これは私がこれを解決しようとする方法です。