上下文:cherrypy session當前鎖定請求開始並在請求結束時釋放鎖定。因此併發請求被串行處理並被阻塞。猴子修補子類
是否可以擴展一個類,覆蓋一些方法,其中新方法調用父方法,然後猴子修補結果?
例子:
from cherrypy.lib import sessions
class LockingSession(sessions.RamSession):
def get(self, *args, **kwargs):
# acquire lock
super(LockingSession).get(*args, **kwargs)
# release lock
sessions.RamSession = LockingSession
的例子不工作 - 無限循環:-)
請問這是正確的做法。這可能嗎?如果是,如何?
我不知道猴子補丁,但我會嘗試注入你的班級進入'sessions'模塊,而不是替換現有的模塊,然後在config中啓用它。看看這行https://github.com/cherrypy/cherrypy/blob/master/cherrypy/lib/sessions.py#L784 他們選擇在模塊中按名稱聲明的類。你應該使用這個。 – webKnjaZ
以下是使用redis後端的自定義會話類的示例: https://bitbucket.org/webknjaz/blueberrypy-wk/src/cb2753de29c4ec0f1be00baf2e828b35e0939b47/src/blueberrypy/command.py?at=default&fileviewer=file-view-default#command .py-269:270 https://bitbucket.org/webknjaz/blueberrypy-wk/src/cb2753de29c4ec0f1be00baf2e828b35e0939b47/src/blueberrypy/session.py?at=default&fileviewer=file-view-default#session.py-33:91 – webKnjaZ
不知道Mokey補丁:)我知道它是面向方面編程。也許這個線程可以提供幫助:http://stackoverflow.com/questions/286958/any-aop-support-library-for-python – Johan