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

时间:2015-04-20 17:56:56

标签: jquery python real-time logfile

我有一个调用许多服务的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
  }
);

我的问题是用户只有在执行完成后才能看到日志文件。 有没有办法在实时写入日志时显示日志?

2 个答案:

答案 0 :(得分:1)

Python的stdout是缓冲的,因此在缓冲区已满之前不会写入。要强制立即写入,请在代码中使用sys.stdout.flush()f.flush()

答案 1 :(得分:0)

我终于找到了我在这里寻找的东西:

http://blog.miguelgrinberg.com/post/easy-websockets-with-flask-and-gevent

所以基本上我在后端(Python / Flask)和前端(HTML,jquery)之间创建了一个WebSocket,以确保持续的通信。

使用Python我创建了一个与主线程异步运行的线程,重复获取日志文件的内容并通过ajax将它们发送到Jquery

相关问题