ホームページ >バックエンド開発 >Python チュートリアル >Python でポーリングせずにログ ファイルの変更を効率的に監視するにはどうすればよいですか?

Python でポーリングせずにログ ファイルの変更を効率的に監視するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-21 06:18:10402ブラウズ

How Can I Efficiently Monitor Log File Changes in Python Without Polling?

Python でのファイル変更の監視

この記事では、ログ ファイルの変更を監視し、処理のために更新されたデータを読み取るという課題について説明します。元の質問では、PyWin32 を使用する可能性がある非ポーリング ソリューションを見つけたいという要望が表明されていました。

この目的のために、Python ライブラリ Watchdog が有望なソリューションを提供します。ウォッチドッグは、複数のプラットフォームにわたるファイル システム イベントを監視するように設計されています。これは、開発者がファイルの変更または作成時に特定のアクションを実行するカスタム イベント ハンドラーを定義できる API を提供します。

Watchdog を使用すると、特定のログ ファイルを監視し、その内容を読み取るための単純なイベント ハンドラーを設定できます。何らかの変更があった場合。以下に例を示します。

import watchdog.observers as observers
import watchdog.events as events

class FileEventHandler(events.FileSystemEventHandler):
    def on_modified(self, path, event):
        with open(path, 'r') as f:
            data = f.read()
            # Process the new data here

# Path to the log file
log_path = '/path/to/log.txt'

# Create the file handler
handler = FileEventHandler()

# Create the observer and schedule the log file for monitoring
observer = observers.Observer()
observer.schedule(handler, log_path, recursive=False)

# Start the observer
observer.start()

# Blocking code to keep the observer running
observer.join()

この設定では、ログ ファイルに変更を加えると on_modified メソッドがトリガーされ、次に新しいデータが読み取られて処理されます。ファイルの変更を監視する信頼性の高い効率的な方法を提供することで、Watchdog はポーリングの必要性を軽減し、この特定の要件に対する実用的なソリューションを提供します。

以上がPython でポーリングせずにログ ファイルの変更を効率的に監視するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。