[英]python : redirect output to text file and display it in real time
我有一个python函数,该函数调用许多服务,并在日志文件中打印这些服务的结果。 这是我的代码:
def coordinator():
f = file(path,'a')
sys.stdout = f
/* do a lot of stuff */
f.close()
with open(path) as log:
logs = log.read()
return jsonify(log = logs)
该函数的结果返回到jQuery getJSON函数,该函数在网页中显示最终的日志文件:
$.getJSON('/../coordinator',
{//parameters},
function(data) {
//display data.log
}
);
我的问题是用户仅在执行完成后才能看到日志文件。 有没有办法实时显示日志?
Python的stdout
已缓冲,因此直到缓冲区已满时它才写。 要强制立即写入,对于代码,请使用sys.stdout.flush()
或f.flush()
。
我终于找到了我想要的东西:
http://blog.miguelgrinberg.com/post/easy-websockets-with-flask-and-gevent
因此,基本上,我在后端(Python / Flask)和前端(HTML,jquery)之间创建了一个WebSocket以确保持续通信。
并使用Python创建了一个与主线程异步运行的线程,重复获取日志文件的内容,并将其通过ajax发送到Jquery
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.