Python
wsgi 和 python 列印語句
我已經意識到我的 django 應用程序中的列印語句導致 wsgi 出錯並失敗。無需查看我的所有程式碼並刪除/註釋列印語句,有沒有一種方法可以在執行 wsgi 時禁用它們。它需要盡可能簡單。
謝謝
使用 WSGIRestrictStdout 選項:
WSGIRestrictStdout Off
或在 Django WSGI 星形腳本中將 sys.stdout 替換為 sys.stderr:
import sys sys.stdout = sys.stderr
任何聲稱可移植的 WSGI 應用程序組件都不應該寫入標準輸出。也就是說,應用程序不應該在沒有將輸出定向到某個備用流的情況下使用 Python 列印語句。應用程序也不應該直接寫入 sys.stdout。
一般來說,最好在 Web 應用程序中對任何類型的調試輸出使用日誌記錄,並且根本不要使用列印語句。或以下列形式使用它們:
print >> environ['wsgi.errors'], "message to be printed"
最好將 sys.stdout 製作為 sys.stderr 的副本,以防萬一。
如果您在 UNIX 伺服器上進行開發,您可以打開兩個終端視窗,一個執行 Django,另一個執行
tail -f loggingfile
你得到的效果與使用 print 語句幾乎相同,但是你可以使用標準
logging
模組來生成輸出,並且在生產應用程序中,你只需將過濾器設置更改為不顯示 DEBUG 級別的消息。