Heim > Artikel > Backend-Entwicklung > Wie kann ich Protokolldateien in Python ohne Blockierung überwachen?
Tailing von Protokolldateien in Python
F: Gibt es eine nicht blockierende oder sperrende Möglichkeit, eine Protokolldatei in Python zu verfolgen, ähnlich wie der Befehl tail -F? Obwohl es eine ältere Methode gibt, gibt es eine bessere Lösung oder Bibliothek?
A: Nicht blockierend:
Unter Linux bietet die Verwendung des Unterprozesses und der ausgewählten Module eine Nicht blockierende Lösung:
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)
Diese Lösung fragt die Ausgabepipe nach neuen Daten ab und zeigt diese sofort an. Sie können time.sleep(1) und print f.stdout.readline() durch benutzerdefinierte Funktionen ersetzen.
Blockierung:
Für einen Blockierungsansatz können Sie verwenden das Unterprozessmodul ohne zusätzliche Module:
import subprocess f = subprocess.Popen(['tail','-F',filename],\ stdout=subprocess.PIPE,stderr=subprocess.PIPE) while True: line = f.stdout.readline() print line
Diese Methode gibt auch neue Zeilen aus, sobald sie auftauchen, hält jedoch die Ausführung an, bis der Endprozess abgeschlossen ist beendet (z. B. über f.kill()).
Das obige ist der detaillierte Inhalt vonWie kann ich Protokolldateien in Python ohne Blockierung überwachen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!