我一直在試圖跟蹤我的mod_wsgi/Python web應用程序的奇怪問題。我有一個創建對象並調用方法應用處理程序:是mod_wsgi/Python優化的東西嗎?
def my_method(self, file):
self.sapi.write("In my method for %d time"%self.mmcount)
self.mmcount += 1
# ... open file (absolute path to file), extract list of files inside
# ... exit if file contains no path/file strings
for f in extracted_files:
self.num_files_found += 1
self.my_method(f)
在這段開始和結束,我寫
obj.num_files_found
到瀏覽器。
所以這是一個遞歸函數,它在文件內部的文件引用樹下進行。打印文件中的任何引用,然後打開並檢查這些引用,直到所有文件都是不含文件的葉節點。爲什麼我這樣做並不重要......它更像是一個迂腐的例子。
您所期望的輸出是確定性
如
Files found: 0
In my method for the 0 time
In my method for the 1 time
In my method for the 2 time
In my method for the 3 time
...
In my method for the n time
Files found: 128
而且爲不出所料前幾個請求。然後我得到的,只要下面我刷新
Files found: 0
In my method for the 0 time
Files found: 128
儘管我知道,從以前的刷新,並沒有代碼/文件的改變,它需要ň倍列舉128個文件。
所以,那麼問題:mod_wsgi/Python是否包含內部優化,將停止完整的執行?它猜測輸出是確定性和緩存嗎?
作爲一個說明,在刷新時,如果預期的那樣,REMOTE_PORT每次增加一個......當它使用一個短輸出時,REMOTE_PORT的增量會大幅增加。但可能不相關。
我是新來的Python,溫柔
解決
誰知道這是什麼,但剝開了Apache,mod_python的,mod_wsgi的幾乎一切HTTP相關的和重新安裝固定問題。有些東西是相當壞但現在看起來好像:)
的全局變量沒有得到請求之間復位? – 2009-06-05 19:40:51
@Aiden Bell:好點。澄清需要。 – 2009-06-05 19:45:23