我正在为我的 CherryPy 应用程序编写调试方法。有问题的代码(非常)基本上等同于:
import cherrypy
class Page:
def index(self):
try:
self.body += 'okay'
except AttributeError:
self.body = 'okay'
return self.body
index.exposed = True
cherrypy.quickstart(Page(), config='root.conf')
我惊讶地发现,从一个请求到另一个请求,self.body 的输出都在增长。当我从一个客户端访问该页面,然后从另一个同时打开的客户端访问该页面,然后刷新两者的浏览器时,输出是一个不断增加的“okay”字符串。在我的调试方法中,我还记录了特定于用户的信息(即会话数据),并且这也显示在两个用户的输出中。
我假设这是因为 python 模块被加载到工作内存中,而不是为每个请求重新运行。
我的问题是:它是如何工作的?self.debug 是如何从请求保留到请求的,但cherrypy.session 和cherrypy.response 不是?
有没有办法设置一个只用于当前请求的对象属性?我知道我可以根据每个请求覆盖 self.body ,但这似乎有点临时。在 CherryPy 中是否有标准或内置的方法?
(第二个问题转移到CherryPy 缓存是如何工作的?)