Parcours · 8 leçons · 97 min
Python · système et API
venv, os, shutil, subprocess, puis les API REST avec requests. Le programme du CC2.
venv, pip et variables d'environnement
Isoler les paquets d'un projet dans un venv, figer leurs versions dans requirements.txt, lire une variable d'environnement avec os.environ et savoir pourquoi un secret n'a rien à faire dans le code ni dans git.
Rapports datés, os.scandir et shutil
Créer un dossier de rapports, nommer chaque rapport avec sa date pour qu'il se trie tout seul, lister un dossier avec os.scandir, calculer l'âge d'un fichier, puis copier, déplacer, archiver et supprimer avec shutil.
subprocess : lancer une commande depuis Python
Lancer une commande avec subprocess.run et une liste d'arguments, lire son code de retour et sa sortie, transformer un échec en exception avec check=True, borner l'attente avec timeout, et adapter la commande au système avec platform.system et shutil.which.
Bilan du parc : log.log, max(key=) et code de sortie
Journaliser chaque serveur au niveau qui correspond à son état avec log.log, trouver le pire état du parc avec max et key, et en déduire le code de sortie du programme : 0, 1 ou 2.
HTTP et requests.get : interroger /health
Lire un code de statut HTTP, distinguer un serveur sain, en panne ou injoignable, et interroger une adresse avec requests.get : status_code, json(), text, elapsed et raise_for_status().
requests : timeout, exceptions et statut ok / degraded / down
Mettre un timeout à chaque appel, reconnaître Timeout, ConnectionError, HTTPError et leur parent RequestException, ranger les except dans le bon ordre et classer un serveur en ok, degraded ou down.
Session et essais répétés : réessayer sans insister
Réutiliser une connexion et des en-têtes avec requests.Session(), réessayer un appel raté avec une boucle for et time.sleep, doubler la pause à chaque essai, et savoir pourquoi on s'arrête après quelques essais.
API GitLab et webhook : token, pagination, alerte
Appeler une API authentifiée avec un token placé dans un en-tête et lu dans os.environ, récupérer toutes les pages d'une liste, nettoyer un nom avec removeprefix, puis envoyer une alerte utile sur un webhook avec requests.post.
Test du parcours Python · système
10 questions. Tu réponds, on passe à la suivante. La note arrive à la fin.
Ta note