如何在MySQL中为CherryPy 3.2.2存储web会话?
我找到了许多CherryPy旧版本的示例,但它们都引用了CherryPy 3.2.2中没有的导入模块,我发现了一个参考,即有内置的存储类型功能(ram、文件、postgresql中的一种)。首先,你可以看一下 这家伙是如何编写自己的会话类并覆盖某些方法的。他是为redis而不是MySQL做的。您可以为MySQL编写方法。cherrypy中“cherrpy/lib/sessions.py”中已经存在一个非常类似的类: 这和你想要的非常相似。我想说的是,采用“3kwa”中的实现方法,但不是他的RedisSession类,而是从“cherrpy/lib/sessions.py”中复制PostgresqlSession类,并修改以匹配正确的MySQL语法 一个可能的路径可以是: 从上面的链接下载“cherrys.py”,并重命名为“mysqlsession.py”。用“cherrpy/lib/sessions.py”中的“PostgresqlSession(Session)”覆盖“redissession(Session)”,并重命名为“MySQLSession(Session)”。一定要加上如何在MySQL中为CherryPy 3.2.2存储web会话?,mysql,session,cherrypy,Mysql,Session,Cherrypy,我找到了许多CherryPy旧版本的示例,但它们都引用了CherryPy 3.2.2中没有的导入模块,我发现了一个参考,即有内置的存储类型功能(ram、文件、postgresql中的一种)。首先,你可以看一下 这家伙是如何编写自己的会话类并覆盖某些方法的。他是为redis而不是MySQL做的。您可以为MySQL编写方法。cherrypy中“cherrpy/lib/sessions.py”中已经存在一个非常类似的类: 这和你想要的非常相似。我想说的是,采用“3kwa”中的实现方法,但不是他的Re
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
添加到新的“MySQLSession”-类(就像在redisession(Session)中完成的那样)。更改PostgreSQL语法以匹配MySQL语法(这应该不难)。将“MySQLSession.py”放在项目目录下的某个位置,并使用
import mysqlsession
和使用
cherrypy.lib.sessions.MySQLSession = mysqlsession.MySQLSession
在应用程序的初始化中。在配置中
tools.sessions.storage_type : 'mysql'
以及与类“PostgreSQL”类似的参数(如主机、端口等)
我可能一直都是错的。但这就是我试图解决这个问题的方法。首先,你可以看看 这家伙是如何编写自己的会话类并覆盖某些方法的。他是为redis而不是MySQL编写的。你可以为MySQL编写方法。cherrypy中的“cherrpy/lib/sessions.py”中已经存在一个非常类似的类: 这与您想要的非常相似。我想说,采用“3kwa”中的实现方法,但不是他的RedisSession类,而是从“cherrpy/lib/sessions.py”中复制PostgresqlSession类,并修改以匹配正确的MySQL语法 一个可能的路径可以是: 从上面的链接下载“cherrys.py”并重命名为“mysqlsession.py”。从“cherrpy/lib/sessions.py”用“PostgresqlSession(Session)”覆盖“redissession(Session)”,并重命名为“mysqlsession(Session)”。确保添加
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
添加到新的“MySQLSession”-类(就像在redisession(Session)中完成的那样)。更改PostgreSQL语法以匹配MySQL语法(这应该不难)。将“MySQLSession.py”放在项目目录下的某个位置,并使用
import mysqlsession
和使用
cherrypy.lib.sessions.MySQLSession = mysqlsession.MySQLSession
在应用程序的初始化中。在配置中
tools.sessions.storage_type : 'mysql'
以及与类“PostgreSQL”类似的参数(如主机、端口等)
我可能一直都是错的,但这就是我试图解决这个问题的方法