Watchdog – Dateiänderungen überwachen mit Python

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einführung in die Dateisystemüberwachung

In der modernen Softwareentwicklung ist die Überwachung von Dateisystemänderungen eine kritische Aufgabe. Das Erkennen von Erstellung, Änderung, Löschung und Verschiebung von Dateien wird in verschiedenen Szenarien benötigt: vom automatischen Starten von Tests bei Codeänderungen bis zur Überwachung von Logs in der Produktion.

Die Bibliothek Watchdog ist eine plattformunabhängige Lösung für Python, die eine effiziente und zuverlässige Dateisystemüberwachung mit minimalem Overhead bietet. Sie nutzt native Betriebssystemmechanismen und stellt eine einheitliche API für die Arbeit mit Dateisystemereignissen bereit.

Was ist Watchdog

Watchdog ist eine Python-Bibliothek zur Echtzeit-Überwachung des Dateisystems. Sie gewährleistet plattformübergreifende Kompatibilität, indem sie je nach Betriebssystem verschiedene Systemmechanismen nutzt: inotify unter Linux, FSEvents unter macOS und ReadDirectoryChangesW unter Windows.

Wichtige Vorteile

Die Bibliothek bietet mehrere entscheidende Vorteile gegenüber Eigenentwicklungen oder alternativen Tools. Erstens sorgt sie durch die Nutzung nativer System-APIs anstelle von periodischem Polling für hohe Leistung. Zweitens stellt Watchdog eine einheitliche Schnittstelle für alle unterstützten Plattformen bereit, was die Entwicklung plattformunabhängiger Anwendungen vereinfacht.

Installation und Einrichtung

Die Installation der Bibliothek erfolgt auf dem Standardweg über pip:

pip install watchdog

Für zusätzliche Funktionen, einschließlich des Kommandozeilentools watchmedo, kann die erweiterte Version installiert werden:

pip install watchdog[watchmedo]

Die Bibliothek erfordert keine weitere Konfiguration und ist direkt nach der Installation einsatzbereit.

Architektur und Hauptkomponenten

Watchdog basiert auf mehreren Schlüsselkomponenten, die zusammenarbeiten, um die Dateisystemüberwachung zu ermöglichen.

Observer (Beobachter)

Der Observer ist die zentrale Komponente des Überwachungssystems. Er startet und verwaltet den Überwachungsprozess in einem separaten Thread, um die Hauptprogrammausführung nicht zu blockieren. Der Observer kann gleichzeitig mehrere Pfade mit verschiedenen Ereignisbehandlern überwachen.

EventHandler (Ereignisbehandler)

Der EventHandler legt fest, wie das Programm auf verschiedene Dateisystemereignisse reagieren soll. Entwickler erstellen eigene Handler, indem sie von der Basisklasse FileSystemEventHandler erben und die benötigten Methoden überschreiben.

Event (Ereignisse)

Ereignisse sind Objekte, die Informationen über die stattgefundenen Änderungen im Dateisystem enthalten. Jedes Ereignis umfasst den Pfad zur Datei oder zum Verzeichnis, den Operationstyp und zusätzliche Metadaten.

Grundlegende Anwendungsbeispiele

Einfache Überwachung

Betrachten wir ein einfaches Beispiel zur Erstellung eines Überwachungssystems:

import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

class BasicHandler(FileSystemEventHandler):
    def on_modified(self, event):
        if not event.is_directory:
            print(f"Datei geändert: {event.src_path}")
    
    def on_created(self, event):
        if not event.is_directory:
            print(f"Datei erstellt: {event.src_path}")

observer = Observer()
observer.schedule(BasicHandler(), path="./ueberwachter_ordner", recursive=True)
observer.start()

try:
    while True:
        time.sleep(1)
except KeyboardInterrupt:
    observer.stop()
    
observer.join()

Überwachung mit Logging

Für eine detailliertere Ereignisverfolgung kann das integrierte Logging verwendet werden:

                    

Empfehlungen