Python でブロックせずにログ ファイルを追跡するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-16 07:19:03
オリジナル
868 人が閲覧しました

How Can I Tail Log Files in Python Without Blocking?

Python Tail: ブロックせずにログ ファイルを追跡する

Python では、さまざまな方法を使用して、ブロックやロックを行わずにログ ファイルを追跡することができます。一般的に使用されるアプローチの 1 つは、subprocess モジュールを select モジュールと組み合わせて使用​​することです。

ノンブロッキング テーリング:

Linux 環境で作業する場合、 tail コマンドを実行しているサブプロセスの出力パイプをポーリングするモジュールを選択します。以下に例を示します。

import time
import subprocess
import select

f = subprocess.Popen(['tail', '-F', filename],
                   stdout=subprocess.PIPE, stderr=subprocess.PIPE)
p = select.poll()
p.register(f.stdout)

while True:
    if p.poll(1):
        print(f.stdout.readline())
    time.sleep(1)
ログイン後にコピー

このコードは、select.poll() メソッドを使用して、出力パイプに利用可能な新しいデータがあるかどうかを確認します。新しい行を検出すると、それらを出力します。

Blocking Tailing:

より簡単に実装するには、select モジュールを使用せずに subprocess モジュールを使用できます。ただし、このメソッドは、末尾のプロセスが終了するまでスクリプトをブロックします。

import subprocess
f = subprocess.Popen(['tail', '-F', filename],
                   stdout=subprocess.PIPE, stderr=subprocess.PIPE)
while True:
    line = f.stdout.readline()
    print(line)
ログイン後にコピー

このコードは、出現した新しい行を読み取って出力しますが、末尾のプロセスが終了するまでブロックします。

以上がPython でブロックせずにログ ファイルを追跡するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート