Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich Protokolldateien in Python überwachen, ohne sie zu blockieren?

Wie kann ich Protokolldateien in Python überwachen, ohne sie zu blockieren?

Linda Hamilton
Linda HamiltonOriginal
2024-11-16 07:19:03853Durchsuche

How Can I Tail Log Files in Python Without Blocking?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn