Python

wsgi 和 python 列印語句

  • February 24, 2011

我已經意識到我的 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 級別的消息。

引用自:https://serverfault.com/questions/239614