上下文: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
这个例子不起作用 - 无限循环: - )
这是正确的做法吗?这有可能吗?如果是,怎么样?
答案 0 :(得分:0)
此pull request(2016年9月4日合并,可用于CherryPy >= 8.1
)引入了一种指定会话类的新方法。
像这样的Smth应该满足你的需求:
import cherrypy
class Root:
...
class LockingSession(sessions.RamSession):
def get(self, *args, **kwargs):
# acquire lock
super(LockingSession).get(*args, **kwargs)
# release lock
conf = {
...,
'tools.sessions.storage_class': LockingSession,
...,
}
cherrypy.quickstart(Root(), '/', conf)
以下应该工作:
from cherrypy.lib import sessions
class LockingSession(sessions.RamSession):
def get(self, *args, **kwargs):
# acquire lock
super(LockingSession).get(*args, **kwargs)
# release lock
sessions.LockingSession = LockingSession