Python Tail : suivi des fichiers journaux sans blocage
En Python, le suivi des fichiers journaux sans blocage ni verrouillage peut être obtenu en utilisant diverses méthodes. Une approche couramment utilisée consiste à utiliser le module de sous-processus en combinaison avec le module de sélection.
Suivi non bloquant :
Lorsque vous travaillez dans un environnement Linux, vous pouvez exploiter le select module pour interroger le canal de sortie d'un sous-processus exécutant une commande tail. Voici un exemple :
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)
Ce code utilise la méthode select.poll() pour vérifier si de nouvelles données sont disponibles sur le canal de sortie. Lorsqu'il détecte de nouvelles lignes, il les imprime.
Blocking Tailing :
Pour une implémentation plus simple, vous pouvez utiliser le module subprocess sans le module select. Cependant, cette méthode bloque le script jusqu'à la fermeture du processus tail.
import subprocess f = subprocess.Popen(['tail', '-F', filename], stdout=subprocess.PIPE, stderr=subprocess.PIPE) while True: line = f.stdout.readline() print(line)
Ce code lit et imprime les nouvelles lignes au fur et à mesure qu'elles apparaissent, mais il se bloque jusqu'à la fin du processus tail.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!