Python でブロックせずにログ ファイルを追跡する方法?

Patricia Arquette
リリース: 2024-11-16 19:58:03
オリジナル
145 人が閲覧しました

How to Tail Log Files in Python Without Blocking?

Python でログ ファイルを追跡する

Q: Python でログ ファイルを追跡する非ブロックまたはロックの方法はありますか。コマンド末尾 -F?古いメソッドはありますが、より良いソリューションやライブラリはありますか?

A: ノンブロッキング:

Linux では、サブプロセスと選択モジュールを利用すると、ノンブロッキング ソリューション:

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)
ログイン後にコピー

このソリューションは、新しいデータの出力パイプをポーリングし、すぐに表示します。 time.sleep(1) と print f.stdout.readline() をカスタム機能に置き換えることができます。

ブロッキング:

ブロッキング アプローチの場合は、次を使用できます。追加モジュールのない subprocess モジュール:

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

このメソッドは、出現した新しい行も出力しますが、末尾のプロセスが終了するまで実行を停止します (例: f.kill() 経由)。

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

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