Maison  >  Article  >  développement back-end  >  Comment implémenter une journalisation fiable dans le multitraitement Python ?

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

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-01 05:31:27967parcourir

 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>

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!

Déclaration:
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