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

Comment suivre les fichiers journaux en Python sans blocage ?

Patricia Arquette
Libérer: 2024-11-16 19:58:03
original
191 Les gens l'ont consulté

How to Tail Log Files in Python Without Blocking?

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

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

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!

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