我意识到我的 django 应用程序中的 print 语句导致 wsgi 出错并失败。无需检查所有代码并删除/注释掉 print 语句,有没有办法在运行 wsgi 时禁用它们。它需要尽可能简单。
谢谢
答案1
使用 WSGIRestrictStdout 选项:
WSGIRestrictStdout Off
或者在 Django WSGI 星脚本中将 sys.stdout 替换为 sys.stderr:
import sys
sys.stdout = sys.stderr
任何声称可移植的 WSGI 应用程序组件都不应写入标准输出。也就是说,应用程序不应使用 Python print 语句而不将输出定向到某个备用流。应用程序也不应直接写入 sys.stdout。
答案2
通常,在 Web 应用中,最好使用日志记录来记录任何类型的调试输出,并且根本不要使用打印语句。或者以以下形式使用它们:
print >> environ['wsgi.errors'], "message to be printed"
最好将 sys.stdout 作为 sys.stderr 的副本来删除它,以防万一。
如果你在 UNIX 服务器上进行开发,你可以打开两个终端窗口,一个运行 Django,另一个执行
tail -f loggingfile
您可以获得与使用打印语句几乎相同的效果,但是您可以使用标准logging
模块来生成输出,并且在生产应用程序中,只需更改过滤器设置以不显示 DEBUG 级别的消息。