Maison > développement back-end > Tutoriel Python > Comment puis-je suivre les fichiers journaux en Python sans blocage ?

Comment puis-je suivre les fichiers journaux en Python sans blocage ?

Linda Hamilton
Libérer: 2024-11-16 07:19:03
original
940 Les gens l'ont consulté

How Can I Tail Log Files in Python Without Blocking?

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)
Copier après la connexion

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)
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal