Heim > Artikel > Backend-Entwicklung > Wie kann ich Protokolldateien in Python überwachen, ohne sie zu blockieren?
Python Tail: Tailing von Protokolldateien ohne Blockierung
In Python kann das Tailing von Protokolldateien ohne Blockierung oder Sperrung mit verschiedenen Methoden erreicht werden. Ein häufig verwendeter Ansatz besteht darin, das Subprocess-Modul in Kombination mit dem Select-Modul zu verwenden.
Nicht blockierendes Tailing:
Wenn Sie in einer Linux-Umgebung arbeiten, können Sie das nutzen Wählen Sie ein Modul aus, um die Ausgabepipe eines Unterprozesses abzufragen, der einen Tail-Befehl ausführt. Hier ist ein Beispiel:
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)
Dieser Code verwendet die Methode select.poll(), um zu prüfen, ob neue Daten in der Ausgabepipe verfügbar sind. Wenn neue Zeilen erkannt werden, werden diese ausgedruckt.
Blocking Tailing:
Für eine einfachere Implementierung können Sie das Subprocess-Modul ohne das Select-Modul verwenden. Diese Methode blockiert jedoch das Skript, bis der Tail-Prozess geschlossen ist.
import subprocess f = subprocess.Popen(['tail', '-F', filename], stdout=subprocess.PIPE, stderr=subprocess.PIPE) while True: line = f.stdout.readline() print(line)
Dieser Code liest und druckt neue Zeilen, sobald sie erscheinen, blockiert jedoch, bis der Tail-Prozess beendet ist.
Das obige ist der detaillierte Inhalt vonWie kann ich Protokolldateien in Python überwachen, ohne sie zu blockieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!