Runner
Ce script Python est un gestionnaire pour exécuter diverses applications et API qui peuvent être intégrées à ce système. Il fournit des fonctionnalités de journalisation, de chargement d’applications et d’API, de suivi d’état et un environnement d’exécution pour ces applications. Il utilise massivement le multithreading pour permettre potentiellement l’exécution simultanée et le suivi de plusieurs applications.
La classe Runner est divisée en plusieurs parties :
Initialisation de la classe (
__init__) : Initialise le Runner avec des attributs pour stocker les API et les applications, les indicateurs de débogage et de test, la configuration du logger, les événements de thread et le verrou pour le threading.Configuration du logger (
__setup_logger) : Cette méthode configure le logger pour le Runner, y compris un gestionnaire de fichiers et un gestionnaire de flux (console) en utilisant le modulelogging.Chargement des applications (
__load_applications) : Cette méthode est chargée de charger les instances de chaque application à partir des sous-classes deapplication.Application. Seules les sous-classes qui ne surchargent pas la méthoderunmais qui surchargent la méthodejobsont prises en compte. Leurs instances sont stockées et leur logger est configuré.Chargement des API (
__load_apis) : Cette méthode est chargée de charger les instances de chaque API à partir des sous-classes deapi.API, de les stocker et de configurer leur logger.Suivi d’état (
__get_all_statuset__status_thread) : Ces méthodes sont utilisées pour obtenir l’état de toutes les applications individuellement ou dans un thread séparé de suivi d’état. Le thread de suivi d’état enregistre l’état de toutes les applications après l’avoir obtenu et déterminé le type de message correspondant (erreur, avertissement, débogage).Détection de la surcharge de méthodes (
is_method_overridden) : Cette méthode vérifie si une certaine méthode est surchargée dans les sous-classes d’une application donnée.Exécution du module principal (
run) : Cette méthode charge les API, charge les applications, puis exécute toutes les applications une fois si le drapeau de débogage est activé ou les programme pour qu’elles s’exécutent à leurs fréquences.Arrêt (
shutdown) : Cette méthode arrête le module principal.
L’implémentation utilise la bibliothèque externe schedule pour programmer des travaux (c’est-à-dire exécuter des instances d’application à intervalles réguliers).
Dans l’ensemble, ce script est un exemple assez complexe mais modulaire d’une application Python qui pourrait être utilisée pour exécuter et gérer plusieurs applications et API de manière robuste avec un soutien étendu à la journalisation et au suivi d’état.
This module contains the Runner class.
- class runner.Runner(debug=False, test=False)
Bases :
objectThis class is the main class of the core module.
- __get_status(app)
Get the status of an application.
- Paramètres:
app – The application to get the status of.
- Renvoie:
None
- __load_apis()
This method loads the APIs by creating an instance of each API. The instances are stored in the _apis list attribute. It also sets the logs of each API.
- Renvoie:
None
- __load_applications()
This method loads the applications by creating an instance of each application. The instances are reset if there are existing applications. It also sets the log of each application.
- Renvoie:
None
- __setup_logger()
This method sets up the logger. It creates a file handler and a console handler. The file handler logs all messages with level WARNING.
- Renvoie:
None
- __status_thread(app)
This method is the thread that is run by the status method. It gets the status of all applications and prints it.
- Paramètres:
app – The application object for which the status is to be retrieved.
- Renvoie:
None
- static is_method_overridden(app, method)
This method checks if the given method is overridden in any of the applications.
- Paramètres:
app – The application to check.
method – The method to check.
- Renvoie:
True if the app overrides the method, False otherwise.
- logger = <Logger runner (DEBUG)>
- run()
Runs the core module by calling the job method of each application. If the debug flag is set, the job method is called only once immediately. If the debug flag is not set, the job method is scheduled to run at the frequency of the application.
- Renvoie:
None
- shutdown()
This method shuts down the core module.
- Renvoie:
None