Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Scroll Ignore
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue
Panel
titleSommaire

Table of Contents
maxLevel4
stylenone


Description

Les logs de la rétention Mongodb MongoDB du Scheduler sont classés par catégorie afin de pouvoir différencier les types de log :

  • Gestion du module
  • Connexion à la base de données
  • Sauvegarde
  • Chargement
  • Suppression des lignes de retention rétention obsolètes.

Gestion du module

Sur réception du signal SIGUSR1 le module va effectuer un dump de sa mémoire, pour tout autre signal, le module va s'éteindre 

Code Block
[YYYY-MM-DD HH:MM:SS] INFO   : [ SCHEDULERNAME ] [ MongodbRetention ] [ SOUS-SECTIONMANAGE SIGNAL ] The worker with the pid XXXX received a signal XX

Arrêt critique

Quand le processus de pilotage s'arrête de façon inopinée 

Code Block
[YYYY-MM-DD HH:MM:SS] ERROR  : [ SCHEDULERNAME ] [ MongodbRetention ] [ SOUS-SECTIONWORKER:XXXXX ] I am a worker with pid: XXXX and my master process YYYY is dead, I exit.

Demande d'un dump de la mémoire

Le dump est fait

Python 2.6
Code Block
[YYYY-MM-DD HH:MM:SS] ERROR  : [ SCHEDULERNAME ] [ MongodbRetention ] [ SOUS-SECTION WORKER pid=XXXX ] (support-only) MEMORY DUMP (to be sent to the support):
xxxxxxxx
xxxxxxxx
xxxxxxxx
Python 2.7
Code Block
[YYYY-MM-DD HH:MM:SS] ERROR  : [ SCHEDULERNAME ] [ MongodbRetention ] [ SOUS-SECTION WORKER pid=XXXX ] (support-only) Memory information dumped to file FFFFFFF (to be sent to the support)

Le dump a échoué

Python 2.6
Code Block
[YYYY-MM-DD HH:MM:SS] ERROR  : [ SCHEDULERNAME ] [ MongodbRetention ] [ SOUS-SECTION WORKER pid=XXXX ] MEMORY DUMP: FAIL check if guppy lib is installed
Python 2.7
Code Block
[YYYY-MM-DD HH:MM:SS] ERROR  : [ SCHEDULERNAME ] [ MongodbRetention ] [ SOUS-SECTION WORKER pid=XXXX ] (support-only) MEMORY DUMP: FAIL check if meliae lib is installed

Connexion à la base de données

Connexion normale

Dans les logs suivants, le mot clé SOUS-SECTION peut valoir une des valeurs suivantes :

  • LOAD RETENTION
  • DELETE OLD RETENTION
  • SAVE WORKER XXXXX

Connexion normale

Code Block
[YYYY-MM
Code Block
[YYYY-MM-DD HH:MM:SS] INFO   : [ SCHEDULERNAME ] [ MongodbRetention ] [ SOUS-SECTION ] We are creating mongo connection [uri=mongodb://192.168.1.120/?safe=false] [database=shinken] [ssh=True]
[YYYY-MM-DD HH:MM:SS] INFO   : [ SCHEDULERNAME ] [ MongodbRetention ] [ SOUS-SECTION ] Connection created in : 0.200s

La connexion échoue

Code Block
[YYYY-MM-DD HH:MM:SS] WARNING: [ SCHEDULERNAME ] [ MongodbRetention ] [ SOUS-SECTION ] Mongo connection failed 1/X time, we will try again
[YYYY-MM-DD HH:MM:SS] WARNING: [ SCHEDULERNAME ] [ MongodbRetention ] [ SOUS-SECTION ] Mongo connection failed Y/X times, we will try again
[YYYY-MM-DD HH:MM:SS] ERROR  : [ SCHEDULERNAME ] [ MongodbRetention ] [ SOUS-SECTION ] Mongo connection failed X/X times, we stop trying

La connexion a été perdue ou n'existe pas

Code Block
[YYYY-MM-DD HH:MM:SS] INFO   : [ SCHEDULERNAME ] [ MongodbRetention ] [ SOUS-SECTION ] We need to create a mongo connection

suivi des logs de la connexion normale

La connexion n'a pas pu être établie

Code Block
[YYYY-MM-DD HH:MM:SS] INFO   : [ SCHEDULERNAME ] [ MongodbRetention ] [ SOUS-SECTION ] Could not create mongo connection

Erreurs pendant la suppression d'anciennes données ou lors de la sauvegarde

Erreur de configuration du module

Si plusieurs url mongo sont précisées

Code Block

Si une erreur survient pendant une opération en base de données, les logs suivants vont apparaître :

Exemple
Code Block
title
[YYYY-MM-DD HH:MM:SS] WARNINGERROR  : [ SCHEDULERNAME] [ MongodbRetention ] [ SOUSMODULES-SECTIONMANAGER ] WeThe haveinstance beenMongodbRetention disconnectedraised ofan mongo.error: WillMultiples urls were found in the module's configuration file. I disable it and set it to restart it later

Sauvegarde en rétention

Pour la sauvegarde de la rétention, trois types de logs existent: 

SectionDescription
SAVE GLOBALCorrespond au processus global de la sauvegarde
SAVE WORKERSCorresponds à un sous-processus de SAVE GLOBAL, qui s'occupe de la file d'attente des différents workers de la sauvegarde
SAVE WORKER XC'est un sous-processus de SAVE WORKERS, correspondant à un worker numéroté X qui permet de sauvegarder une partie des informations du Scheduler en base. Le nombre de workers est paramétrable dans les paramètres du module. ( voir la page Module MongodbRetention ( Rétention en base de donnée centralisée par royaume ) )

SAVE GLOBAL

Les logs SAVE GLOBAL donnent des informations relatives au fonctionnement global du module ou de sa configuration.

Code Block
titleExemple
[YYYY-MM-DD HH:MM:SS] INFO   : [ SCHEDULERNAME ] [ MongodbRetention ] [ SAVE GLOBAL ] Starting to save retention data. [XXX:hosts] [XXX:checks] (Database used = mongodb://HOST/?safe=false, use ssh = False)
[YYYY-MM-DD HH:MM:SS] INFO   : [ SCHEDULERNAME ] [ MongodbRetention ] [ SAVE GLOBAL ] SUCCESS Retention data was saved into mongodb. Total time X.XXs

Erreurs

Les erreurs lors de la sauvegarde de la rétention sont aussi enregistrées dans les logs sous cette forme: 

Code Block
[YYYY-MM-DD HH:MM:SS] ERROR  : [ SCHEDULERNAME ] [ MODULES-MANAGER ] The instance MongodbRetention raised an error: ERROR MESSAGE. Total time XX.XXs. I disable it and set it to restart it later
Exemples
Code Block
languagebash
[YYYY-MM-DD HH:MM:SS] ERROR  : [ SCHEDULERNAME ] [ MODULES-MANAGER  ] The instance MongodbRetention raised an error: [ SAVE GLOBAL ] FAILED Retention data could not be saved in mongodb. Total time 22.20s. I disable it and set it to restart it later
Code Block
[YYYY-MM-DD HH:MM:SS] ERROR  : [ SCHEDULERNAME ] [ MODULES-MANAGER  ] The instance MongodbRetention raised an error: [ SAVE GLOBAL ] FAILED Retention data could not be saved in mongodb because mongo is unreachable. Total time 2.11s. I disable it and set it to restart it later

SAVE WORKERS

Les logs SAVE WORKERS donnent l'état de chaque worker de sa création à son succès/échec.

Code Block
titleExemple
[YYYY-MM-DD HH:MM:SS] INFO   : [ SCHEDULERNAME ] [ MongodbRetention ] [ SAVE WORKERS ] Starting worker X with pid XXXXX. Try: X/X
[YYYY-MM-DD HH:MM:SS] INFO   : [ SCHEDULERNAME ] [ MongodbRetention ] [ SAVE WORKERS ] The worker X did SUCCESS (after X try)


La préparation des données à sauvegarder a été longue :

Code Block
[YYYY-MM-DD HH:MM:SS] WARNING: [ SCHEDULERNAME retry [1/3]
[YYYY-MM-DD HH:MM:SS] WARNING: [SCHEDULERNAME] [ MongodbRetention ] [ SOUS-SECTION ] We have been disconnected of mongo. Will retry [2/3]
[YYYY-MM-DD HH:MM:SS] WARNING: [SCHEDULERNAME] [ MongodbRetention ] [ SOUS-SECTIONPERF ] We have been disconnected of mongo. Will retry [3/3][ X.XXXs ] atomization duration


Des erreurs empêchent le bon déroulé de la sauvegarde :

Code Block

[YYYY-MM-DD HH:MM:SS] ERRORINFO   : [ SCHEDULERNAME ] [ MongodbRetention ] [ SOUS-SECTIONSAVE WORKERS ] After 3 tries, we couldn't connect to mongo some workers did fail to exit or encountered an error. The retention save can be incomplete

Code Block
[YYYY-MM-DD HH:MM:SS] ERROR  : [ SCHEDULERNAME ] [ MongodbRetention ] [ SOUS-SECTIONSAVE WORKERS ] WeToo havemany an error:[ERROR MESSAGE]
[tries failed

Code Block
[YYYY-MM-DD HH:MM:SS] ERROR  : [ SCHEDULERNAME ] [ MongodbRetention ] [ SAVE SOUS-SECTIONWORKERS ] (stackCannot du Traceback)
[YYYY-MM-DD HH:MM:SS] ERROR  : [SCHEDULERNAME] [ MongodbRetention ] [ SOUS-SECTION ] ...

Erreur de configuration du module

start the XXXXX worker process as there is not enough memory

Si plusieurs url mongo sont précisées

Code Block
[YYYY-MM-DD HH:MM:SS] ERROR  : [ SCHEDULERNAME ] [ MODULES-MANAGERMongodbRetention ] The[ instanceSAVE MongodbRetentionWORKERS raised] an error: Multiples urls were found in the module's configuration file. I disable it and set it to restart it later

Sauvegarde en rétention

Pour la sauvegarde de la rétention, trois types de logs existent: 

Cannot start the worker X process: XX. Exiting the retention save, killing all currently launched workers

SAVE WORKER X

Les logs SAVE WORKER X donne pour le worker ayant l'identifiant X, les statistiques sur les sauvegardes qu'il a effectuées : le nombre d'éléments, résultat et temps d'exécution.

Code Block
titleExemple
[YYYY-MM-DD HH:MM:SS] INFO   : [ SCHEDULERNAME ] [ MongodbRetention ] [ SAVE WORKER 0 ] Updating retention with elements: checks [ XXX ] -- hosts [ XX ] in mongodb
SectionDescriptionSAVE GLOBALCorrespond au processus global de la sauvegardeSAVE WORKERSCorresponds à un sous-processus de SAVE GLOBAL, qui s'occupe de la file d'attente des différents workers de la sauvegardeSAVE WORKER XC'est un sous-processus de SAVE WORKERS, correspondant à un worker numéroté X qui permet de sauvegarder une partie des informations du Scheduler en base. Le nombre de workers est paramétrable dans les paramètres du module. ( voir Rétention en base de donnée centralisée par royaume ( Module MongodbRetention ) )

SAVE GLOBAL

Les logs SAVE GLOBAL donnent des informations relatives au fonctionnement global du module ou de sa configuration.

Code Block
titleExemple
[YYYY-MM-DD HH:MM:SS] INFO   : [ SCHEDULERNAME ] [ MongodbRetention ] [ SAVE WORKER GLOBAL0 ] Starting to saveRetention retention data. [XXX:hosts] [XXX:checks] (Database used = mongodb://HOST/?safe=false, use ssh = False)
saved into mongodb in X.XXX seconds

Erreurs

Code Block
[YYYY-MM-DD HH:MM:SS] INFO   WARNING: [ SCHEDULERNAME ] [ MongodbRetention ] [ SAVE WORKER GLOBALX ] The SUCCESS Retention data was saved into mongodb. Total time X.XXs

Erreurs

Les erreurs lors de la sauvegarde de la rétention sont aussi enregistrées dans les logs sous cette forme: 
worker (pid:XXXX | try:XX) did not exit on time (XX s). We are restarting it.
Code Block
[YYYY-MM-DD HH:MM:SS] ERROR  : [ SCHEDULERNAME ] [ MODULES-MANAGERMongodbRetention ] The[ instanceSAVE MongodbRetentionWORKER raisedX an] error:Failed ERRORconnection MESSAGE.with Totalthe time XX.XXs. I disable it and set it to restart it later
Exemples
following message : ERROR MESSAGE
Perte de connexion à la base de données
Code Block
Code Block
languagebash
[YYYY-MM-DD HH:MM:SS] ERROR  WARNING: [ SCHEDULERNAME ] [ MODULES-MANAGER MongodbRetention ] The instance MongodbRetention raised an error: [ SAVE WORKER GLOBALX ] FAILEDworker Retention data could not be saved in mongodb. Total time 22.20s. I disable it and set it to restart it later
Code Block
has been disconnected of mongo. Will retry [1/X]
[YYYY-MM-DD HH:MM:SS] ERROR  :WARNING: [SCHEDULERNAME] [ SCHEDULERNAMEMongodbRetention ] [ SAVE MODULES-MANAGERWORKER X ] The instance MongodbRetention raised an error: [ SAVE GLOBAL ] FAILED Retention data could not be saved in mongodb because mongo is unreachable. Total time 2.11s. I disable it and set it to restart it later

SAVE WORKERS

Les logs SAVE WORKERS donnent l'état de chaque worker de sa création à son succès/échec.

Code Block
titleExemple
 worker has been disconnected of mongo. Will retry [Y/X]
[YYYY-MM-DD HH:MM:SS] WARNING: [SCHEDULERNAME] [ MongodbRetention ] [ SAVE WORKER X ] worker has been disconnected of mongo. Will retry [X/X]
[YYYY-MM-DD HH:MM:SS] INFOERROR   : [ SCHEDULERNAME ] [ MongodbRetention ] [ SAVE WORKER WORKERSX ] Starting After X tries, worker Xcould not withconnect pidto XXXXX.mongo Try: X/X[ERROR MESSAGE]
[YYYY-MM-DD HH:MM:SS] INFOERROR   : [ SCHEDULERNAME ] [ MongodbRetention ] [ SAVE WORKERS ] The worker WORKER X did] SUCCESS (after X try)

La préparation des données à sauvegarder a été longue :

(pid=XXXX) "EXCEPTION PYTHON"
Code Block
[YYYY-MM-DD HH:MM:SS] ERROR  WARNING: [ SCHEDULERNAME ] [ MongodbRetention ] [ PERF ]SAVE WORKER X ] Worker has an error: [ X.XXXs ] atomization duration

Des erreurs empêchent le bon déroulé de la sauvegarde :

Code Block
ERROR MESSAGE ]
[YYYY-MM-DD HH:MM:SS] INFO ERROR  : [ SCHEDULERNAME ] [ MongodbRetention ] [ SAVE WORKER WORKERSX ] some workers did fail to exit or encountered an error. The retention save can be incomplete
(pid=XXXX) "EXCEPTION PYTHON"

Chargement de la rétention

Les logs fournissent des informations liées au chargement de la rétention, permettant de suivre son avancée et l'état sur la connexion à Mongo.


Code Block
[YYYY-MM-DD HH:MM:SS] ERRORINFO   : [ SCHEDULERNAME ] [ MongodbRetention ] [ SAVELOAD WORKERSRETENTION ] [ HOSTS Too/ manyCLUSTERS tries] failed
Code Block
[YYYY-MM-DD HH:MM:SS] ERROR  : [ SCHEDULERNAME ] [ MongodbRetention ] [ SAVE WORKERS ] Cannot start the XXXXX worker process as there is not enough memory
Code Block
[ X.XXXs ] We took X    hosts/clusters  from the retention [ in scheduler hosts/clusters : without retention=X    / total=1    ]
[YYYY-MM-DD HH:MM:SS] INFO ERROR  : [ SCHEDULERNAME ] [ MongodbRetention ] [ SAVELOAD WORKERSRETENTION ] Cannot[ HOSTS start/ theCLUSTERS worker] X process: XX. Exiting theNo host/cluster are needed for retention save,load killing(scheduler all currently launched workers

SAVE WORKER X

Les logs SAVE WORKER X donne pour le worker ayant l'identifiant X, les statistiques sur les sauvegardes qu'il a effectuées : le nombre d'éléments, résultat et temps d'exécution.

Code Block
titleExemple
already have all X    hosts retention data).
[YYYY-MM-DD HH:MM:SS] INFO   : [ SCHEDULERNAME ] [ MongodbRetention ] [ SAVE WORKER 0 ] Updating retention with elements: checks [ XXX ] -- hosts [ XX ] in mongodb
[YYYY-MM-DD HH:MM:SS] INFO   : [ SCHEDULERNAME ] [ MongodbRetention ] [ SAVE WORKER 0 ]  Retention data saved into mongodb in X.XXX seconds

Erreurs

Code Block
 LOAD RETENTION ] [ CHECKS           ] [ X.XXXs ] We took X    checks          from the retention [ in scheduler checks         : without retention=XX   / total=XX   ]
[YYYY-MM-DD HH:MM:SS] INFO WARNING  : [ SCHEDULERNAME ] [ MongodbRetention ] [ SAVELOAD WORKER XRETENTION ] The worker (pid:XXXX | try:XX) did not exit on time (XX s). We are restarting it.
Code Block
[YYYY-MM-DD HH:MM:SS] ERROR  : [ SCHEDULERNAME ] [ MongodbRetention ] [ SAVE WORKER X ] Failed connection with the following message : ERROR MESSAGE

Chargement de la rétention

Les logs fournissent des informations liées au chargement de la rétention, permettant de suivre son avancée et l'état sur la connexion à Mongo.

Code Block
[ CHECKS           ] No checks       are needed for retention load (scheduler already have all X    checks retention data).
[YYYY-MM-DD HH:MM:SS] INFO   : [ SCHEDULERNAME ] [ MongodbRetention ] [ LOAD RETENTION ] [ HOSTS / CLUSTERS ] [ X.XXXs ] We took X    hosts/clusters  from the retention [ in scheduler hosts/clusters : without retention=X    / total=1    ]
 X.XXXs]  Total number of elements load from mongo database: X    ( scheduler have a total of XX   elements )
[YYYY-MM-DD HH:MM:SS] INFO   : [ SCHEDULERNAME ] [ MongodbRetention ] [ LOAD RETENTION ] [ X.XXXs ] SUCCESS Retention data loaded successfully.

Erreurs

Les erreurs lors du chargement de la rétention sont aussi enregistrées dans les logs sous cette forme:

Code Block
[YYYY-MM-DD HH:MM:SS] INFOERROR   : [ SCHEDULERNAME ] [ MongodbRetention ] [ LOAD RETENTION ] [FAILED HOSTSRetention /data CLUSTERScould ]not Nobe host/clusterloaded arefrom neededmongodb: forERROR retention load (scheduler already have all X MESSAGE DETAILS

Code Block
   hosts retention data).
[YYYY-MM-DD HH:MM:SS] INFOERROR   : [ SCHEDULERNAME ] [ MongodbRetention ] [ LOAD RETENTION ] [error CHECKSquerying host entries: ERROR MESSAGE. Module exiting.

Code Block
[YYYY-MM-DD HH:MM:SS] ERROR  : [ SCHEDULERNAME ] [ MongodbRetention ] [ LOAD RETENTION ] error querying checks entries: ERROR MESSAGE. Module exiting.

Suppression des anciennes rétentions

Les logs de suppression permettent de voir le nombre d'objets supprimés (triés par hôtes et checks) ainsi que la date à partir de laquelle la rétention est conservée.

Code Block
titleExemple avec des objets à supprimer
      ] [ X.XXXs ] We took X    checks          from the retention [ in scheduler checks         : without retention=XX   / total=XX   ]
[YYYY-MM-DD HH:MM:SS] INFO   : [ SCHEDULERNAME ] [ MongodbRetention ] [ LOADDELETE OLD RETENTION ] [ CHECKS           ] NoWe checkswill       are needed for retention load (scheduler already have all X    checks retention data).delete all retention data that were saved before the XXXX-XX-XX XX:XX UTC (X days)
[YYYY-MM-DD HH:MM:SS] INFO   : [ SCHEDULERNAME ] [ MongodbRetention ] [ DELETE LOADOLD RETENTION ] [ X.XXXs]  Total- numberDeleting ofXXX elements loadhosts from mongoold database:retention X[XXXX    ( scheduler have a total of XX   elements )by XXXX]
[YYYY-MM-DD HH:MM:SS] INFO   : [ SCHEDULERNAME ] [ MongodbRetention ] [ DELETE LOADOLD RETENTION   ]  [- X.XXXsXXX ] SUCCESS- Retentionhosts datadeleted loadedin successfully.

Erreurs

Les erreurs lors du chargement de la rétention sont aussi enregistrées dans les logs sous cette forme:

Code Block
X.XXXs
[YYYY-MM-DD HH:MM:SS] INFO ERROR  : [ SCHEDULERNAME ] [ MongodbRetention ] [ LOADDELETE OLD RETENTION ] FAILED Retention] data could- notDeleting beXXX loadedservices from mongodb: ERROR MESSAGE DETAILS
Code Block
old retention [XXXX by XXXX]
[YYYY-MM-DD HH:MM:SS] ERRORINFO   : [ SCHEDULERNAME ] [ MongodbRetention ] [ LOADDELETE OLD RETENTION   ]  error- queryingXXX host entries:- ERRORservices MESSAGE.deleted Modulein exiting.
Code Block
X.XXXs
[YYYY-MM-DD HH:MM:SS] INFO ERROR  : [ SCHEDULERNAME ] [ MongodbRetention ] [ LOADDELETE OLD RETENTION   ] errorTotal queryingtime checksfor entries:deleting ERRORXXXX MESSAGE.entries Module= exiting.

Suppression des anciennes rétentions

Les logs de suppression permettent de voir le nombre d'objets supprimés (triés par hôtes et checks) ainsi que la date à partir de laquelle la rétention est conservée.
X.XXXs
Code Block
titleExemple avec des sans objets à supprimer
[YYYY-MM-DD HH:MM:SS] INFO   : [ SCHEDULERNAME ] [ MongodbRetention ] [ DELETE OLD RETENTION   ] We will delete all retention data that were saved before the XXXX-XX-XX XX:XX UTC (X days)
[YYYY-MM-DD HH:MM:SS] INFO   : [ SCHEDULERNAME ] [ MongodbRetention ] [ DELETE OLD RETENTION   ] There - Deleting XXX hosts from old retention [XXXX by XXXX]is no data to delete
[YYYY-MM-DD HH:MM:SS] INFO   : [ SCHEDULERNAME ] [ MongodbRetention ] [ DELETE OLD RETENTION   ] Total -time XXXfor deleting -0 hostsentries deleted= in X.XXXs

Erreur : perte de connexion à la base de données

Si une erreur survient pendant une opération en base de données, les logs suivants vont apparaître :

Code Block
titleExemple
[YYYY-MM-DD HH:MM:SS] INFO   WARNING: [ SCHEDULERNAME ] [ MongodbRetention ] [ DELETE OLD RETENTION   ] We -have Deletingbeen XXXdisconnected servicesof frommongo. oldWill retentionretry [XXXX by XXXX1/3]
[YYYY-MM-DD HH:MM:SS] INFO   WARNING: [ SCHEDULERNAME ] [ MongodbRetention ] [ DELETE OLD RETENTION   ] We -have XXXbeen disconnected -of servicesmongo. deletedWill in X.XXXsretry [2/3]
[YYYY-MM-DD HH:MM:SS] INFO   WARNING: [ SCHEDULERNAME ] [ MongodbRetention ] [ DELETE OLD RETENTION ] We ] Totalhave timebeen fordisconnected deletingof XXXXmongo. entriesWill = X.XXXs
Code Block
titleExemple sans objets à supprimer
retry [3/3]
[YYYY-MM-DD HH:MM:SS] INFOERROR   : [ SCHEDULERNAME ] [ MongodbRetention ] [ DELETE OLD RETENTION   ] WeAfter will3 delete all retention data that were saved before the XXXX-XX-XX tries, we couldn't connect to mongo
Code Block
XX:XX UTC (X days)
[YYYY-MM-DD HH:MM:SS] INFOERROR   : [ SCHEDULERNAME ] [ MongodbRetention ] [ DELETE OLD RETENTION   ] ThereWe ishave no data to deletean error:[ERROR MESSAGE]
[YYYY-MM-DD HH:MM:SS] INFOERROR   : [ SCHEDULERNAME ] [ MongodbRetention ] [ DELETE OLD RETENTION   ] Total time for deleting 0 entries = X.XXXs"Exception Python"