2013-01-14 24 views
1

我正在向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之類的東西重定向到一個日誌文件。

但我怎麼會得到這個實時更新數據庫?

回答

2

我會做到這一點(有可能是其他的,更好的方法):

  1. 檢查每n秒文件,並記住在該文件的最後一行。
  2. 如果最後一行發生了變化,這意味着自上次檢查以來取得了一些進展。
  3. 一旦你檢測到這樣的進展,你應該能夠觸發寫入你的數據庫的函數。

請注意,這只是幾乎實時的,因爲你只檢查文件中的每個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) 

希望這有助於