Python asynchrone et moderne
Une formation de trois jours axée sur les fonctionnalités Python modernes et la programmation asynchrone. Apprenez à exploiter les annotations de type, les outils modernes et asyncio pour construire des applications haute performance.
Durée
3 jours (21 heures)
Format
50 pour cent présentation, 50 pour cent exercices
Prérequis
Solides fondamentaux Python requis
Supports
Machines virtuelles fournies, supports de cours électroniques
Jour 1 — Essentiels du Python moderne
Annotations de type et syntaxe moderne
- Annotations de type : types de base, Optional, Union, génériques
- Le module typing : TypeVar, Protocol, TypeAlias, ParamSpec
- Dataclasses : champs, post_init, frozen, slots
- Protocoles et sous-typage structurel
- Pattern matching structurel : instructions match/case, gardes, patterns
Outillage moderne
- uv : gestion rapide des paquets et des environnements virtuels
- ruff : linting et formatage ultra-rapides
- mypy : vérification statique de types en pratique
- pytest : patterns de tests modernes et fixtures
- Bonnes pratiques pour les environnements virtuels et la gestion des dépendances
Jour 2 — Fondamentaux de l'asynchrone
La boucle événementielle asyncio
- Comprendre la boucle événementielle : comment asyncio fonctionne en interne
- Coroutines : async def, await, création et exécution de coroutines
- Tâches : création de tâches, collecte de résultats, annulation
- Futures : objets awaitables de bas niveau, callbacks
ASGI et patterns asynchrones avancés
- Concepts ASGI : le protocole, événements de cycle de vie, middleware
- Gestionnaires de contexte asynchrones : async with, gestion des ressources
- Itérateurs et générateurs asynchrones : async for, yield dans le code asynchrone
- Gestion des erreurs en code asynchrone : groupes d'exceptions, groupes de tâches
- Primitives de synchronisation : verrous, sémaphores, événements, files d'attente
Jour 3 — Applications asynchrones réelles
Bibliothèques asynchrones et intégration
- Clients HTTP : aiohttp et httpx pour les requêtes concurrentes
- Accès base de données asynchrone : asyncpg, aiosqlite, SQLAlchemy async
- Files de messages et patterns événementiels
Performance et débogage
- Profilage de performance : identifier les goulots d'étranglement dans le code asynchrone
- Débogage d'applications asynchrones : pièges courants et solutions
- Quand utiliser async vs threading vs multiprocessing
Exercices pratiques
- Construction d'un web scraper asynchrone avec limitation de débit
- Création d'un client API asynchrone avec logique de réessai
- Intégration de code asynchrone avec des bibliothèques synchrones
