我正在为我的CherryPy应用程序编写调试方法。有问题的代码是(非常)基本相同的:为什么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的产量增长。当我从一个客户端访问该页面,然后从另一个同时打开的客户端访问该页面,然后刷新浏览器时,输出是一个不断增加的“好的”字符串。在我的调试方法中,我还记录了用户特定的信息(即会话数据),并且也显示在两个用户的输出中。
我假设这是因为python模块被加载到工作内存中,而不是为每个请求重新运行。
我的问题是:这是如何工作的?它是如何保持self.debug从请求到请求,但cherrypy.session和cherrypy.response不是?
是否有任何方法来设置一个对象属性,只会用于当前的请求?我知道每个请求都可以覆盖self.body,但似乎有点特别。在CherryPy中是否有标准或内置的方式?
(第二个问题转移到How does CherryPy caching work?)
这就是我一直在寻找的东西。我想知道我是否可以使用cherrypy.request和.response,并且规范的方法真的是我想要的。谢谢。 – 2010-10-11 22:24:25
如何从页面处理程序方法访问存储在'cherrypy.request'中的属性?我需要从'cherrypy.request'访问,还是会自动作为'** kwargs'传递?谢谢 – 2017-08-07 12:02:00