我有一个简单的Python测试代码,如下所示:
tmp.py
import time
while True:
print "New val"
time.sleep(1)
如果我按如下方式运行,我通常会在终端上看到日志:
python tmp.py
但是如果我将日志重定向到日志文件,则在日志出现在文件中之前需要一段时间:
python tmp.py >/tmp/logs.log 2>&1
如果我执行cat /tmp/logs.log
,输出会很晚显示在该文件中,或者只有当我按Ctrl+C
为什么我没有立即在重定向文件中看到日志?
我尝试过简单的i / o重定向是否可以解决? (不使用日志等模块在我的Python代码中进行代码更改)
答案 0 :(得分:1)
您的案例的最佳选择是设置环境变量Condition not satisfied:
response.data == '{"isValid": false}'
| | |
| | false
| java.io.StringReader@35636217
groovyx.net.http.HttpResponseDecorator@5e4fa1da
。
这比调用PYTHONUNBUFFERED
更强大,因为这可能在某些虚拟环境中不起作用。
在您的终端中:
#/usr/bin/python -u
答案 1 :(得分:0)
问题在于输出是缓冲的,这意味着python会将输出保存在缓冲区中,并且不时地将其刷新,但不一定在每次打印后刷新。
您可以通过明确调用sys.stdout.flush()
在每次打印后强制刷新来修复。
import time
import sys
while True:
print "New val"
sys.stdout.flush()
time.sleep(1)