Heim > Artikel > Backend-Entwicklung > So verwenden Sie den Python3-Echtzeitbetrieb zum Verarbeiten von Protokolldateien
Angenommen, der Pfad des Protokolls, das wir in Echtzeit lesen möchten, ist: /data/mongodb/shard1/log/pg.csv
Dann können wir das verwenden Shell-Skript in der Python-Datei. Befehl tail -F für Echtzeit-Lesen und -Betrieb. Der Code lautet wie folgt: /output/error-Pipes und rufen Sie deren Rückgabecode (Status) ab.
Einführung in subprocess.Popen
Diese Klasse wird verwendet, um eine Unterroutine in einem neuen Prozess auszuführen.
Konstruktor von subprocess.Popen
import re import codecs import subprocess def pg_data_to_elk(): p = subprocess.Popen('tail -F /data/mongodb/shard1/log/pg.csv', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE,) #起一个进程,执行shell命令 while True: line = p.stdout.readline() #实时获取行 if line: #如果行存在的话 xxxxxxxxxxxx your operation
Parameterbeschreibung:
args: Der auszuführende Shell-Befehl kann eine Zeichenfolge oder eine Sequenz sein, die aus jedem Parameter des Befehls besteht. Wenn der Wert dieses Parameters eine Zeichenfolge ist, ist der Interpretationsprozess des Befehls plattformabhängig. Daher wird im Allgemeinen empfohlen, den Parameter args als Sequenz zu übergeben.
Wenn das Protokoll eine neue Protokolldatei generiert, wenn bestimmte Bedingungen erfüllt sind, z. B. log1.csv hat 20 MB erreicht, dann wird log2.csv dies tun Es gibt wahrscheinlich mehr als 1.000 Dateien pro Tag, und es werden ständig neue generiert. Wie kann man sie also in Echtzeit abrufen?
Der Code lautet wie folgt:
class subprocess.Popen(args, bufsize=-1, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=True, shell=False, cwd=None, env=None, universal_newlines=False, startup_info=None, creationflags=0, restore_signals=True, start_new_session=False, pass_fds=())
Das obige ist der detaillierte Inhalt vonSo verwenden Sie den Python3-Echtzeitbetrieb zum Verarbeiten von Protokolldateien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!