Maison > Article > développement back-end > Comment suivre les fichiers journaux en Python sans blocage ?
Fichiers journaux de suivi en Python
Q : Existe-t-il un moyen non bloquant ou verrouillable de suivre un fichier journal en Python, similaire à la queue de commande -F ? Bien qu'il existe une méthode plus ancienne, existe-t-il une meilleure solution ou bibliothèque disponible ?
R : Non bloquant :
Sous Linux, l'utilisation du sous-processus et des modules de sélection offre un solution non bloquante :
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)
Cette solution interroge le canal de sortie à la recherche de nouvelles données et les affiche immédiatement. Vous pouvez remplacer time.sleep(1) et print f.stdout.readline() par des fonctionnalités personnalisées.
Blocage :
Pour une approche de blocage, vous pouvez utiliser le module de sous-processus sans modules supplémentaires :
import subprocess f = subprocess.Popen(['tail','-F',filename],\ stdout=subprocess.PIPE,stderr=subprocess.PIPE) while True: line = f.stdout.readline() print line
Cette méthode imprimera également les nouvelles lignes au fur et à mesure qu'elles émergent, mais elle arrêtera l'exécution jusqu'à ce que le processus de queue soit terminé (par exemple, via f.kill()).
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!