Menu

Flask : Définition et Guide Complet

6 min de lecture Mis à jour le 05 Avr 2026

Définition

Flask est un micro-framework web Python créé par Armin Ronacher en 2010. Contrairement à Django, Flask adopte une approche minimaliste : il fournit le strict nécessaire (routage, templates, gestion des requêtes) et laisse au développeur la liberté de choisir ses propres outils pour le reste.

Qu'est-ce que Flask ?

Flask est un micro-framework web Python qui se distingue par sa légèreté et sa flexibilité. Créé en 2010 par Armin Ronacher dans le cadre du projet Pallets, Flask est né d'un poisson d'avril qui s'est transformé en projet sérieux. Le terme « micro » ne signifie pas que Flask est limité en fonctionnalités, mais plutôt qu'il garde un noyau simple et extensible. Flask ne fait aucune hypothèse sur la base de données, le système de templates (bien qu'il intègre Jinja2 par défaut) ou la couche d'authentification que vous allez utiliser.

Flask s'appuie sur deux bibliothèques fondamentales du projet Pallets : Werkzeug, une bibliothèque WSGI qui gère les requêtes et réponses HTTP, et Jinja2, un moteur de templates puissant et sécurisé. À partir de ces fondations, le développeur construit son application en ajoutant uniquement les extensions dont il a besoin.

Chez KERN-IT, Flask occupe une place complémentaire à Django dans notre stack technique. Nous l'utilisons principalement pour les microservices, les API légères, les prototypes rapides et les services spécialisés où la flexibilité de Flask représente un avantage par rapport à la structure plus rigide de Django.

Pourquoi Flask est important

Dans l'écosystème Python, Flask représente une philosophie de développement différente de celle de Django. Cette différence n'est pas un défaut : c'est un atout qui le rend indispensable dans certains contextes.

  • Légèreté : une application Flask minimale tient en quelques lignes de code. Cette simplicité réduit le temps de démarrage d'un projet et la courbe d'apprentissage pour les développeurs.
  • Flexibilité totale : Flask n'impose aucune structure de projet, aucun ORM, aucun système d'authentification. Le développeur choisit exactement les composants dont il a besoin, évitant ainsi le surpoids des fonctionnalités inutilisées.
  • Idéal pour les microservices : dans une architecture microservices, chaque service doit être léger et indépendant. Flask est parfaitement adapté à ce paradigme, permettant de créer des services spécialisés avec une empreinte minimale.
  • Prototypage rapide : lorsqu'il faut valider une idée rapidement, Flask permet de créer un POC fonctionnel en quelques heures, sans la configuration initiale nécessaire avec un framework full-stack.
  • Écosystème d'extensions : Flask-SQLAlchemy, Flask-Login, Flask-RESTful, Flask-Migrate et des dizaines d'autres extensions permettent d'ajouter des fonctionnalités à la demande, transformant Flask en framework full-stack si nécessaire.

Comment ça fonctionne

Le fonctionnement de Flask repose sur le concept de routes et de décorateurs Python. Une route associe une URL à une fonction Python (appelée « view function ») via un décorateur @app.route(). Lorsqu'une requête HTTP arrive, Flask utilise Werkzeug pour analyser l'URL et la faire correspondre à la bonne vue.

Flask utilise un système de contexte applicatif et de contexte de requête qui permet d'accéder aux données de la requête courante (paramètres, headers, cookies) via des objets globaux thread-safe. Ce mécanisme élégant évite de passer l'objet requête en paramètre à chaque fonction.

Le moteur de templates Jinja2 intégré offre un langage de templates puissant avec héritage de templates, filtres personnalisés, macros et échappement automatique des données pour prévenir les attaques XSS. Les templates peuvent être organisés en hiérarchie avec un template de base et des templates enfants qui étendent ou surchargent des blocs spécifiques.

Pour la gestion de la base de données, Flask ne fournit pas d'ORM natif mais s'intègre parfaitement avec SQLAlchemy via l'extension Flask-SQLAlchemy. Cette approche permet aux développeurs de choisir entre SQLAlchemy pour les projets nécessitant un ORM complet, ou d'utiliser directement une bibliothèque de base de données pour les cas simples.

Exemple concret

KERN-IT utilise Flask dans plusieurs contextes opérationnels. Un cas d'usage fréquent est le développement de microservices spécialisés au sein d'une architecture plus large. Par exemple, pour un projet de web scraping à grande échelle, nous avons développé un service Flask dédié qui expose une API REST pour soumettre des tâches de scraping, surveiller leur progression et récupérer les résultats. Ce service fonctionne indépendamment du backend Django principal, communiquant via Redis et des webhooks.

Un autre exemple concret est l'utilisation de Flask pour des services d'intelligence artificielle. Prenons l'exemple d'une entreprise qui a besoin d'exposer un modèle de machine learning via une API. Un microservice Flask peut encapsuler le modèle entraîné, exposer un endpoint de prédiction et gérer le versioning des modèles. Cette architecture découplée permet de mettre à jour le modèle ML indépendamment du reste de l'application, facilitant ainsi les itérations et le déploiement continu.

Flask est également notre choix pour les outils internes et les scripts d'administration exposés via une interface web. Un tableau de bord de monitoring avec quelques endpoints ne justifie pas la mise en place d'un projet Django complet : Flask permet de créer cet outil en quelques heures avec un minimum de code.

Mise en œuvre

  1. Installation : installez Flask dans un environnement virtuel avec pip install flask. Créez un fichier app.py avec une application minimale pour vérifier que tout fonctionne.
  2. Structure du projet : pour les projets de taille moyenne, adoptez la structure « application factory » avec un package Python, un fichier __init__.py contenant la factory create_app(), et des blueprints pour organiser les routes par domaine fonctionnel.
  3. Configuration : utilisez des classes de configuration pour séparer les paramètres de développement, test et production. Chargez les secrets depuis des variables d'environnement avec os.environ ou python-dotenv.
  4. Extensions : ajoutez les extensions nécessaires : Flask-SQLAlchemy pour la base de données, Flask-Migrate pour les migrations Alembic, Flask-Login pour l'authentification, Flask-CORS pour les requêtes cross-origin.
  5. Tests : utilisez le client de test intégré de Flask avec pytest. Testez chaque endpoint avec des requêtes simulées et vérifiez les codes de statut et les données de réponse.
  6. Déploiement : ne jamais utiliser le serveur de développement Flask en production. Déployez avec Gunicorn ou uWSGI derrière Nginx, dans un conteneur Docker pour garantir la portabilité.

Technologies et outils associés

  • Python : le langage fondamental sur lequel Flask est construit.
  • SQLAlchemy : ORM Python de référence, utilisé avec Flask via Flask-SQLAlchemy.
  • Jinja2 : moteur de templates intégré à Flask, également utilisé par Django et Ansible.
  • Celery : gestionnaire de tâches asynchrones, utilisable avec Flask pour les traitements en arrière-plan.
  • Docker : conteneurisation des microservices Flask pour un déploiement isolé et reproductible.
  • Redis : utilisé comme cache et broker de messages dans les architectures microservices Flask.
  • FastAPI : alternative moderne à Flask pour les API performantes avec validation automatique des données.
  • Gunicorn : serveur WSGI pour déployer Flask en production.

Conclusion

Flask est le compagnon idéal de Django dans une stratégie de développement Python complète. Là où Django excelle pour les applications web complexes et les plateformes full-stack, Flask brille pour les microservices, les API légères et les prototypes rapides. Chez KERN-IT, nous utilisons les deux frameworks de manière complémentaire, choisissant l'outil le mieux adapté à chaque contexte. La maîtrise de Flask, combinée à notre expertise Django, nous permet d'offrir à nos clients des architectures logicielles flexibles et performantes, capables de s'adapter aux besoins les plus variés.

Conseil Pro

Utilisez systématiquement le pattern « application factory » avec create_app() dès le début de votre projet Flask, même pour les petits projets. Ce pattern facilite les tests, la configuration par environnement et l'évolution future de l'application.

Un projet en tête ?

Discutons de comment nous pouvons vous aider à concrétiser vos idées.