从日志文件实时进度

时间:2013-01-14 00:49:47

标签: python

我正在向iTunes发送视频项目。当我运行命令时,我得到一个类似于:

的输出
$ command
[2013-01-09 11:02:14 PST] <main> DBG-X:   1% 
[2013-01-09 11:02:15 PST] <main> DBG-X:   2% 
[2013-01-09 11:02:16 PST] <main> DBG-X:   3%
...etc...

如何更新应用程序中的数据库字段以显示此交付的进度?我想我会使用类似stdout=subprocess.PIPE, stderr=subprocess.PIPE的东西重定向到日志文件。

但是我如何实时更新数据库?

1 个答案:

答案 0 :(得分:2)

我会这样做(可能还有其他更好的方式):

  1. 每隔n秒检查一次文件,并记住该文件中的最后一行。
  2. 如果最后一行已更改,则表示自上次检查后已取得一些进展。
  3. 一旦检测到此类进展,您就应该能够触发写入数据库的功能。
  4. 请注意,这只是几乎实时,因为您每隔n秒只检查一次文件

    <强>代码

    progress = 0
    lastLine = ''
    n = 5 # seconds
    while progress < 100:
        with open('path/to/logfile') as logfile:
            for newLine in logfile:
                pass
            if newLine.strip() != lastLine:
                lastLine = newLine.strip()
                writeToDatabase(lastLine)
        time.sleep(n)
    

    希望这有帮助