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 :

  1. 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.

  2. 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 module logging.

  3. Chargement des applications (__load_applications) : Cette méthode est chargée de charger les instances de chaque application à partir des sous-classes de application.Application. Seules les sous-classes qui ne surchargent pas la méthode run mais qui surchargent la méthode job sont prises en compte. Leurs instances sont stockées et leur logger est configuré.

  4. Chargement des API (__load_apis) : Cette méthode est chargée de charger les instances de chaque API à partir des sous-classes de api.API, de les stocker et de configurer leur logger.

  5. Suivi d’état (__get_all_status et __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).

  6. 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.

  7. 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.

  8. 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 : object

This 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