Comment implémenter une journalisation fiable dans le multitraitement Python ?

Mary-Kate Olsen
Libérer: 2024-11-01 05:31:27
original
1054 Les gens l'ont consulté

 How to Implement Reliable Logging in Python Multiprocessing?

Journalisation lors de l'utilisation du module multitraitement de Python

Lors de l'utilisation du module multitraitement de Python 2.6 pour la génération de processus, un enregistreur au niveau du module est généralement attribué à chaque processus pour empêcher les données corruption dans le descripteur de fichier partagé sys.stderr. Cependant, s'assurer que tous les modules dépendants utilisent également cette approche de journalisation prenant en charge le multitraitement peut s'avérer fastidieux à la fois à l'intérieur et à l'extérieur du cadre.

Une solution alternative a été proposée pour résoudre ce problème :

Établir un paramètre personnalisé Gestionnaire de journaux pour le multitraitement

Un gestionnaire de journaux personnalisé a été créé pour rediriger tous les appels de journalisation vers le processus parent à l'aide d'un canal. Spécialement conçue pour RotatingFileHandler, cette approche rassemble efficacement les journaux de plusieurs processus enfants et les consolide dans le processus parent.

La mise en œuvre implique :

<code class="python">from logging.handlers import RotatingFileHandler
import multiprocessing, threading, logging, sys, traceback

class MultiProcessingLog(logging.Handler):
    # ... Implementation as per above ...</code>
Copier après la connexion

Ce gestionnaire de journaux personnalisé exploite une file d'attente pour la concurrence. et la récupération des erreurs, garantissant une journalisation fiable dans tous les processus.

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