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

しかし、これをリアルタイムで取得してデータベースを更新するにはどうすればよいでしょうか?

4

1 に答える 1

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)

お役に立てれば

于 2013-01-14T01:14:11.927 に答える