繁体   English   中英

python:将输出重定向到文本文件并实时显示

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM