2014-09-04 129 views
1

我新的python和web开发,我有一个基本的问题,我相信。
我正在用金字塔运行我的服务器,并使用nohup.out将输出写入文件。Python - nohup.out不显示打印语句

nohup ../bin/pserve development.ini 

当我做tail -f nohup.out
我可以看到所有的输出从我的代码logging.info()电话来了。
但我没有看到来自print()调用的所有输出。

这是什么原因,我怎么能设置它,我会看到nohup文件中的print()?

回答

0

打印输出在未到达终端时被缓冲。 nohup用非终端(实际上是一个文件)替换stdout。

在没有任何代码的情况下,我所能做的只是猜测,但最可能的答案是您的输出缓冲在python进程中,并且当缓冲区填满时它将被刷新到nohup.out。要查看是否属于这种情况,请尝试添加更多打印件以更快地填充缓冲区。

8

您可以使用stdbuf -oL来刷新打印语句。命令看起来像

nohup stdbuf -oL python python_script.py > nohup.out 
0

您可以使用

nohup python -u python_script.py & 
+1

欢迎堆栈溢出!感谢您的代码片段,它可能会提供一些有限的即时帮助。通过展示*为什么*这是一个很好的解决方案,并且使它对未来的读者更有用,一个正确的解释[将大大提高](// meta.stackexchange.com/q/114762)其长期价值其他类似的问题。请[编辑]你的答案以添加一些解释,包括你所做的假设。 – 2017-10-24 11:54:23