wsgi 和 python 打印语句

wsgi 和 python 打印语句

我意识到我的 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 级别的消息。

相关内容