Heim  >  Artikel  >  Backend-Entwicklung  >  Wie man Protokolldateien in Python überwacht: Blockierend oder nicht blockierend?

Wie man Protokolldateien in Python überwacht: Blockierend oder nicht blockierend?

Susan Sarandon
Susan SarandonOriginal
2024-11-20 19:54:18970Durchsuche

How to Tail Log Files in Python: Blocking vs. Non-Blocking?

Tailing von Protokolldateien mit Python

Man möchte oft eine Protokolldatei verfolgen oder sie auf andere Weise passiv beobachten, um den neuen hinzugefügten Inhalt anzuzeigen . Dies kann in Python auf verschiedene Arten erreicht werden.

Nicht blockierend

Für diesen Ansatz kann man den Unterprozess verwenden und Module auswählen.

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 öffnet einen Unterprozess, der tail -F für die angegebene Datei ausführt, fragt seine Ausgabe nach neuen Daten ab und druckt sie aus, wenn sie verfügbar sind. Dieser Ansatz blockiert nicht das Hauptprogramm.

Blockierung

Ein einfacherer Blockierungsansatz ist verfügbar, wenn nur das Unterprozessmodul verwendet wird.

import subprocess

f = subprocess.Popen(['tail', '-F', filename],
                      stdout=subprocess.PIPE, stderr=subprocess.PIPE)
while True:
    line = f.stdout.readline()
    print(line)

Dieser Code gibt auch neue Zeilen aus, wenn sie hinzugefügt werden, aber er wird blockiert, bis das Endprogramm geschlossen wird.

Das obige ist der detaillierte Inhalt vonWie man Protokolldateien in Python überwacht: Blockierend oder nicht blockierend?. 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