我正在爲我的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