2012-03-21 47 views

回答

3

一開始,你可以在

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

看看這傢伙怎麼寫自己的session類,並覆蓋一些方法。他爲redis而不是MySQL做。你會爲MySQL編寫方法。一個非常類似的類中已經存在的CherryPy在「cherrpy/lib目錄/ sessions.py」:

class PostgresqlSession(Session) 

這是非常相似的,你想要什麼。我會說,採取從「3kwa」實現的方法,而不是他的RedisSession類從「cherrpy/lib/sessions.py」複製PostgresqlSession類,並更改爲匹配正確的MySQL語法。

一個可能的路徑可能是:

下載從上面的鏈接「cherrys.py」,並重新命名爲「mysqlsession.py」。用「cherrpy/lib/sessions.py」中的「PostgresqlSession(Session)」覆蓋「RedisSessions(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」級(就像它在RedisSession(會議)來完成。改變PostgreSQL的語法搭配MySQL的語法(這不應該是困難的)。把「mysqlsession.py」的項目目錄和進口某處的應用與

import mysqlsession 

,並在你的應用程序初始化使用

cherrypy.lib.sessions.MySQLSession = mysqlsession.MySQLSession 

,在配置

tools.sessions.storage_type : 'mysql' 

和像「PostgreSQL」類一樣的參數(如主機,端口等)。

我可能一直都是錯的。但這是我將如何解決這個問題。