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

Susan Sarandon
Freigeben: 2024-11-20 19:54:18
Original
963 Leute haben es durchsucht

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)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage