PYTHONUNBUFFERED在docker文件中有什么用?

May*_*aja 103 django docker dockerfile

我正在看一个教程来 dockerize 我的 django 应用程序。我不明白为什么我们PYTHONUNBUFFEREDDockerFile 中用作环境变量。

你能帮忙吗?

Zei*_*tor 184

设置PYTHONUNBUFFERED为非空值可确保 python 输出直接发送到终端(例如您的容器日志)而无需首先缓冲,并且您可以实时查看应用程序的输出(例如 django 日志)。

这也确保没有部分输出保存在某个缓冲区中,并且在 python 应用程序崩溃的情况下永远不会写入。

参考:

  • 仅供参考:设置 `PYTHONUNBUFFERED=0` 与未设置或空字符串具有相同的效果。这是因为 CPython 尝试使用“strtol(3)”(全字符串匹配)来解析环境变量。 (3认同)

小智 16

PYTHONUNBUFFERED空值强制 stdout 和 stderr 流不被缓冲。此选项对标准输入流没有影响。


小智 6

这指示 Python 在 UNBUFFERED 模式下运行,在 Docker 容器内使用 Python 时建议使用该模式。原因是它不允许 Python 缓冲输出;相反,它直接打印输出,避免了运行 Python 应用程序时 docker 映像中的一些复杂情况。

  • @N1ngu 我担心这个评论写得太快了,没有经过适当的先前研究,并且包含对作者技能的过早的主观(并且可能有害)判断。应用程序(在开发中或生产中)发生重大崩溃而日志中没有任何痕迹可能会成为了解到底发生了什么的主要障碍。这可以称为并发症(即使我同意应该给出细节)。 (3认同)