Maison développement back-end Tutoriel Python Le flacon est-il mort ? FastAPI est-il l'avenir ?

Le flacon est-il mort ? FastAPI est-il l'avenir ?

Dec 27, 2024 am 09:30 AM

Is Flask Dead? Is FastAPI the Future?
Lors de mes recherches pertinentes, j'ai remarqué que même en 2024, un certain nombre de personnes recommandent encore Flask comme framework web Python. Cependant, à mon avis, "Flask est en voie de disparition et FastAPI représente l'avenir". C'est pourquoi j'écris cet article. J'invite tout le monde à se joindre à la discussion et à proposer des contre-arguments.

Flacon et FastAPI

Flask occupe une place importante dans le cœur des développeurs Python. Si vous êtes un développeur Web, je parie que vous avez probablement utilisé Flask, mais peut-être n'avez-vous jamais essayé FastAPI.

Voici deux éléments de preuve :

  1. Dans les nouveaux projets Python importants liés au développement Web au cours des deux dernières années, presque tous ceux qui impliquent le développement Web ont adopté FastAPI.
  2. Au 25 décembre 2024, sur GitHub, le nombre d'étoiles pour FastAPI (78,9k) a déjà dépassé celui de Flask (68,4k).

Jetons maintenant un coup d'œil à l'évolution de la proportion de frameworks Web dans les enquêtes officielles des développeurs Python.

Il est évident qu'en 2019, FastAPI n'était même pas répertorié comme une option, pourtant en 2023, sa part avait atteint 25 %. (Actuellement, nous ne disposons que de données jusqu'en 2023.)

Il convient de noter que ces données de proportion englobent les systèmes existants, donc les proportions de Django et Flask ne baisseront pas rapidement. Néanmoins, la tendance est claire.

Nous savons tous que le domaine des frameworks Web est très prolifique, avec de nouveaux frameworks émergeant presque chaque année. La plupart de ces cadres sont de courte durée, tandis que certains parviennent à perdurer. FastAPI est né fin 2018 et a commencé à se faire un nom vers la fin 2019. Alors, comment pourrait-il dépasser Flask, né fin 2010, en termes de popularité en seulement cinq ans ? Ensuite, traçons l'historique de développement des frameworks Web Python et des solutions associées tout au long de la chronologie pour une meilleure compréhension.

L'évolution des frameworks Web (plugins, outils)

L'auteur de FastAPI est un développeur qui porte une attention extrêmement particulière au développement de l'écosystème Python. Le lien de lecture étendu 2 est "Alternatives, Inspiration and Comparisons" écrit par l'auteur (https://fastapi.tiangolo.com/alternatives/), qui développe en détail les références ou inspirations que FastAPI a tirées de diverses bibliothèques. La section historique du développement de cet article fait également référence à cet article. Je recommanderais de lire le texte original, car il contient la justification de l'émergence de FastAPI ainsi que certains des concepts de conception de l'auteur.

Ballon

Flask est un framework "micro", qui est aux antipodes de Django. Il ne conserve qu'une poignée de fonctions principales et, pour découpler, divise les autres fonctions en plusieurs bibliothèques (telles que Jinja2, Werkzeug, etc.). Cela donne aux développeurs une grande liberté et leur permet d'écrire sans effort des plugins tiers pour des fonctions associées. Ses conceptions internes telles que les plans, les contextes et les décorateurs pour représenter les itinéraires, les signaux, etc. étaient assez avancées à l'époque. Associé à une documentation complète, il est extrêmement convivial pour les débutants.

Cadres REST Flask

Grâce à sa simplicité, Flask est parfaitement adapté à la création d'API. Cependant, comme Flask lui-même ne comporte aucune fonction intégrée, nous avons besoin de frameworks REST spécialisés. Par conséquent, des frameworks tels que flask-restful, Flask-RESTPlus et flask-api ont vu le jour les uns après les autres. De plus, dans les services REST, il existe des exigences en matière de validation, d'analyse et de spécification des données, ce qui a conduit à l'émergence de Marshmallow, Webargs et APISpec, jusqu'à l'arrivée de Flask-apispec. Cependant, tout au long de ce processus de développement, un framework Flask REST comparable au DRF ne s'est jamais matérialisé.

À ce stade, les défauts de Flask sont progressivement apparus.

Les atouts originaux de Flask résident dans sa flexibilité et son minimalisme, mais cela signifie également qu'un grand nombre de composants doivent être développés en interne. Cela nécessite soit une grande entreprise avec des développeurs dédiés au développement et à la maintenance, soit des développeurs individuels extrêmement compétents. Sinon, il est difficile pour les plugins d'atteindre la qualité de production, ce qui entraîne un mélange de plugins tiers pour Flask, sans garantie de maintenance à long terme. Comme mentionné précédemment, bon nombre de ces bibliothèques ont déjà cessé d'être entretenues.

Donc, même aujourd'hui, si vous souhaitez créer un service API avec Flask, vous devez toujours assembler différents composants. Pour certains composants qui n'ont pas été mis à jour rapidement, vous devrez effectuer le dépannage vous-même. Les vétérans seront peut-être capables de le gérer, mais pour les débutants, c'est plutôt intimidant, surtout lorsqu'ils veulent appliquer les dernières pratiques et concepts.

L'écosystème Asyncio

Depuis Python 3.5, asyncio est la tendance future. En conséquence, certains frameworks Web prenant en charge nativement asyncio ont vu le jour, tels que aiohttp, Starlette et sanic.

À cette époque, Flask était réticent à s'adapter. La communauté a mis du temps à ajouter la prise en charge d'asyncio, et l'auteur original de Flask est passé à l'écriture de Rust, laissant le projet entre les mains de deux responsables (il n'en reste plus qu'un).

Les projets de création de services API, comme apistar et molten, ont tous inspiré la conception de la naissance de FastAPI.

API rapide

Puis, FastAPI est né. L’auteur cherchait à l’origine une bonne solution, mais les situations ci-dessus présentaient chacune leurs propres problèmes ou limites. Ainsi, l'auteur a créé ce nouveau cadre.

Pourquoi FastAPI se démarque

C'est la partie centrale de l'article. Les raisons suivantes expliquent précisément pourquoi FastAPI peut remplacer Flask.

Validation des données utilisateur avec Pydantic

Dans le processus de développement de l'API, la validation du format des données, l'analyse et la sérialisation sont des opérations de routine. Au fil des années, plusieurs solutions ont vu le jour, et actuellement, Pydantic est le premier choix :

from fastapi import FastAPI
from pydantic import BaseModel


class Item(BaseModel):
    name: str
    description: str | None = None
    price: float
    tax: float | None = None


app = FastAPI()


@app.post("/items/")
async def create_item(item: Item):
    return item
Copier après la connexion

À première vue, ce code peut ressembler à une manière d'écrire ORM ou dataclass, mais en fait, il utilise la syntaxe native Type Hints de Python pour annoter les types de champs. Par exemple, dans l'exemple ci-dessus, le schéma de l'élément dans la requête /items/ a été clairement défini et les types de valeur de chaque champ sont explicites. Par rapport aux anciennes méthodes d'utilisation des descriptions de schéma ou même du codage en dur, cette approche est plus concise, plus conforme au style Python et offre un meilleur support IDE.

Actuellement, Pydantic domine le domaine de la validation des données utilisateur. Puisque FastAPI l’a intégré, le processus de validation est considérablement simplifié et les erreurs sont réduites. C'est pourquoi le site officiel de FastAPI mentionne que cette solution peut réduire jusqu'à 40 % les erreurs des développeurs. Pour un langage dynamique comme Python, l'application de Pydantic est essentielle si vous n'utilisez pas mypy pour la vérification de type.

De plus, grâce à l'intégration de Pydantic, ajouter un ORM (comme SQLAlchemy) au projet devient extrêmement simple. Les objets obtenus à partir des requêtes peuvent être directement transmis à la base de données car la validation des données est déjà terminée. Vice versa, les objets récupérés de la base de données peuvent également être directement renvoyés.

En revanche, Flask manque à cet égard.

Conception asynchrone

À l'ère de Flask, l'exécution du code était monothread et synchrone. Cela signifiait que les requêtes devaient être traitées une par une et que les autres requêtes perdaient du temps à attendre les opérations d'E/S avant que la précédente ne soit terminée. Asyncio, en revanche, est la solution optimale. Il peut rendre les opérations d'E/S asynchrones, vous permettant d'obtenir les résultats des tâches sans attendre la fin des tâches, puis de traiter d'autres demandes de tâches.

FastAPI prend en charge nativement le code simultané et asynchrone. Tant que le code est écrit correctement, il peut atteindre une efficacité maximale. Par conséquent, il est actuellement considéré comme le framework Python le plus rapide, avec une efficacité similaire à celle de NodeJS ou Go. Lorsque la vitesse et les performances sont essentielles, FastAPI est sans aucun doute le meilleur choix.

Prise en charge native d'ASGI

Mentionnons d'abord WSGI. Son nom complet est « Python Web Server Gateway Interface », auquel on peut faire référence dans « PEP 3333 » (https://peps.python.org/pep-3333/). Il s'agit d'un standard Python écrit spécifiquement pour l'interaction entre les applications Web et les serveurs. Si vous avez utilisé PHP ou Ruby, vous trouverez peut-être cela plus facile à comprendre. Flask dépend de Werkzeug, qui est une suite WSGI, donc Flask prend en charge cet ancien standard WSGI et non ASGI.

Le problème avec WSGI est qu'il ne peut pas exploiter l'asynchronie pour améliorer les performances et l'efficacité. Ainsi, la chaîne Django a été la pionnière d'ASGI. Son nom complet est « Asynchronous Server Gateway Interface », qui est une norme itérative et presque entièrement repensée. Il fournit des interfaces serveur/application asynchrones et prend en charge HTTP, HTTP/2 et WebSocket. Contrairement à WSGI, ASGI permet à chaque application d'avoir plusieurs événements asynchrones. De plus, ASGI prend en charge les applications synchrones et asynchrones. Vous pouvez soit migrer les anciennes applications Web WSGI synchrones vers ASGI, soit utiliser ASGI pour créer de nouvelles applications Web asynchrones.

Avant de tirer des conclusions, ajoutons cinq explications de termes :

  1. ASGI Toolkit : bibliothèques qui implémentent des fonctions liées à ASGI (telles que le routage d'URL, les objets de requête/réponse, les moteurs de modèles, etc.). Dans cet article, il fait principalement référence à Starlette, qui correspond à la dépendance de Flask, Werkzeug.
  2. ASGI Web Framework : frameworks Web qui implémentent la spécification ASGI (comme FastAPI), tandis que Flask et Django sont des frameworks Web qui implémentent WSGI. Ces frameworks sont conçus pour permettre aux développeurs d'écrire des applications, avec des interfaces faciles à utiliser. Les développeurs n'ont qu'à remplir la logique métier en fonction de leurs besoins. Les premiers frameworks implémentaient principalement les boîtes à outils ASGI en interne, tandis que les frameworks ultérieurs combinent généralement des boîtes à outils appropriées. Par exemple, Flask utilise Werkzeug (le sien) et FastAPI utilise Starlette (des autres).
  3. Application Web : Une application créée à l'aide d'un framework Web est une application Web. Habituellement, les frameworks Web sont livrés avec un serveur de test qui peut être démarré pour le développement et le débogage. Si les performances et la stabilité ne sont pas un souci, vous pouvez déjà accéder à l'adresse de développement dans le navigateur pour visiter cette application.
  4. Serveur Web : Le monde réel est plus complexe que prévu. Une fois qu'une application Web est déployée dans l'environnement de production, des exigences telles que l'équilibrage de charge des demandes, la diffusion de fichiers statiques, le contrôle d'accès et le proxy inverse doivent être prises en compte, ainsi que des exigences de performances élevées. Les serveurs Web intégrés aux frameworks Web ne peuvent pas du tout répondre à ces exigences, des serveurs Web spécialisés sont donc nécessaires. Actuellement, Nginx est le choix dominant.
  5. Serveur ASGI : Le serveur ASGI fait office de pont entre le serveur web et l'application web. Le serveur ASGI adhère également à la spécification ASGI, mais sa tâche principale est de répondre aux exigences de performances des requêtes de transfert, il s'occupe donc principalement de la partie « G » (passerelle) d'ASGI. Son code n'est pas convivial pour les développeurs qui souhaitent écrire une logique commerciale et de routage d'applications Web. Actuellement, le serveur ASGI le plus connu est Uvicorn, et uvicorn.workers.UvicornWorker, qui provient à l'origine du serveur WSGI Gunicorn, est également une option. Il s'agit de l'utilisation recommandée dans l'environnement de production.

Dans le passé, la solution d'environnement de production pour WSGI était généralement Nginx Gunicorn Flask (Django), alors qu'aujourd'hui, la solution d'environnement de production pour ASGI est Nginx Uvicorn FastAPI.

Encore une chose. À en juger par le nom et l'introduction de FastAPI, il est évident qu'il est conçu pour créer des services API. En fait, son code de base est exactement comme ça. On peut dire qu'il ne s'agit pas d'un cadre traditionnel entièrement mis en œuvre par nous-mêmes, mais plutôt d'un cadre qui combine les atouts de divers cadres. Partant d’une coque vide, il assemble les composants nécessaires et adaptés. Par exemple, il ne dispose pas de moteur de modèles. Si vous avez vraiment besoin de l'utiliser pour créer une application Web nécessitant un rendu de modèle, vous pouvez choisir et combiner le moteur de modèle dont vous avez besoin. Bien sûr, vous pouvez également utiliser le Jinja2 intégré à Starlette (oui, il est également intégré à Flask).

Pourquoi on dit que Flask est mort

Les avantages de FastAPI mentionnés ci-dessus ne suffisent pas pour conclure que Flask est mort. Alors, pourquoi ai-je ce point de vue ? Cela dépend principalement de la popularité auprès des développeurs et des utilisateurs.

La « popularité » ici est plutôt subjective. Les indicateurs auxquels je peux penser sont les suivants :

  1. Activité communautaire(https://github.com/pallets/flask/issues) : Prenez par exemple le nombre de tickets et de pull request du projet. Flask n'a que des nombres à un chiffre, ce qui est complètement différent de FastAPI. Cela signifie en fait que le projet n'est plus actif. Si le projet est actif, les anciens utilisateurs auront plus de besoins. S’ils arrêtent de poser des questions, c’est qu’ils sont partis. Et les nouveaux utilisateurs rencontreront sûrement toutes sortes de problèmes. Même avec une documentation détaillée, de nombreux utilisateurs devraient toujours venir poser des questions et contribuer au code. L'absence de telles situations indique moins d'utilisateurs.
  2. Discussion Heat : c'est-à-dire la popularité des demandes de renseignements et des discussions sur les articles de blog, Stack Overflow et d'autres sites Web. Il est évident qu'il y a très peu de gens qui écrivent sur Flask ces jours-ci.
  3. Fréquence d'itération de développement(https://github.com/pallets/flask/pulls) : en regardant les enregistrements de commit, nous pouvons voir que Flask n'a qu'un seul responsable qui corrige occasionnellement certains bugs, sans aucune fonctionnalité majeure développement.
  4. Influence du personnage clé : Le personnage clé derrière Flask, l'initiateur du projet, a depuis longtemps cessé de participer au projet. Selon les dossiers de contribution au projet, Armin Ronacher a contribué pour la dernière fois au développement il y a six ans.

Toutes ces situations, à mon avis, suggèrent que l'apogée de Flask est révolue et que FastAPI est l'étoile montante.

Enfin, permettez-moi de vous présenter la plateforme idéale pour déployer Flask/FastAPI : Leapcell.

Leapcell est une plate-forme de cloud computing conçue spécifiquement pour les applications distribuées modernes. Son modèle de tarification par répartition garantit l'absence de coûts inutiles, ce qui signifie que les utilisateurs ne paient que pour les ressources qu'ils utilisent réellement.

Is Flask Dead? Is FastAPI the Future?

Les avantages uniques de Leapcell pour les applications WSGI/ASGI :

1. Prise en charge multilingue

  • Prend en charge le développement en JavaScript, Python, Go ou Rust.

2. Déploiement gratuit de projets illimités

  • Frais uniquement en fonction de l'utilisation. Aucun frais lorsqu'il n'y a aucune demande.

3. Rentabilité inégalée

  • Payez à l'utilisation, sans frais d'inactivité.
  • Par exemple, 25 $ peuvent prendre en charge 6,94 millions de requêtes, avec un temps de réponse moyen de 60 millisecondes.

4. Expérience de développeur simplifiée

  • Interface utilisateur intuitive pour une configuration facile.
  • Pipelines CI/CD entièrement automatisés et intégration GitOps.
  • Mesures et journaux en temps réel, fournissant des informations exploitables.

5. Évolutivité sans effort et hautes performances

  • Mise à l'échelle automatique pour gérer facilement une concurrence élevée.
  • Zéro surcharge opérationnelle, permettant aux développeurs de se concentrer sur le développement.

Apprenez-en plus dans la documentation !

Twitter de Leapcell : https://x.com/LeapcellHQ

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Niveaux de force pour chaque ennemi et monstre de R.E.P.O.
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
<🎜>: Dead Rails - Comment apprivoiser les loups
3 Il y a quelques semaines By DDD
<🎜>: Grow A Garden - Guide de mutation complet
2 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel Java
1655
14
Tutoriel PHP
1252
29
Tutoriel C#
1226
24
Python vs C: applications et cas d'utilisation comparés Python vs C: applications et cas d'utilisation comparés Apr 12, 2025 am 12:01 AM

Python convient à la science des données, au développement Web et aux tâches d'automatisation, tandis que C convient à la programmation système, au développement de jeux et aux systèmes intégrés. Python est connu pour sa simplicité et son écosystème puissant, tandis que C est connu pour ses capacités de contrôle élevées et sous-jacentes.

Python: jeux, GUIS, et plus Python: jeux, GUIS, et plus Apr 13, 2025 am 12:14 AM

Python excelle dans les jeux et le développement de l'interface graphique. 1) Le développement de jeux utilise Pygame, fournissant des fonctions de dessin, audio et d'autres fonctions, qui conviennent à la création de jeux 2D. 2) Le développement de l'interface graphique peut choisir Tkinter ou Pyqt. Tkinter est simple et facile à utiliser, PYQT a des fonctions riches et convient au développement professionnel.

Combien de python pouvez-vous apprendre en 2 heures? Combien de python pouvez-vous apprendre en 2 heures? Apr 09, 2025 pm 04:33 PM

Vous pouvez apprendre les bases de Python dans les deux heures. 1. Apprenez les variables et les types de données, 2. Structures de contrôle maître telles que si les instructions et les boucles, 3. Comprenez la définition et l'utilisation des fonctions. Ceux-ci vous aideront à commencer à écrire des programmes Python simples.

Le plan Python de 2 heures: une approche réaliste Le plan Python de 2 heures: une approche réaliste Apr 11, 2025 am 12:04 AM

Vous pouvez apprendre les concepts de programmation de base et les compétences de Python dans les 2 heures. 1. Apprenez les variables et les types de données, 2. Flux de contrôle maître (instructions et boucles conditionnelles), 3. Comprenez la définition et l'utilisation des fonctions, 4. Démarrez rapidement avec la programmation Python via des exemples simples et des extraits de code.

Python vs C: courbes d'apprentissage et facilité d'utilisation Python vs C: courbes d'apprentissage et facilité d'utilisation Apr 19, 2025 am 12:20 AM

Python est plus facile à apprendre et à utiliser, tandis que C est plus puissant mais complexe. 1. La syntaxe Python est concise et adaptée aux débutants. Le typage dynamique et la gestion automatique de la mémoire le rendent facile à utiliser, mais peuvent entraîner des erreurs d'exécution. 2.C fournit des fonctionnalités de contrôle de bas niveau et avancées, adaptées aux applications haute performance, mais a un seuil d'apprentissage élevé et nécessite une gestion manuelle de la mémoire et de la sécurité.

Python et temps: tirer le meilleur parti de votre temps d'étude Python et temps: tirer le meilleur parti de votre temps d'étude Apr 14, 2025 am 12:02 AM

Pour maximiser l'efficacité de l'apprentissage de Python dans un temps limité, vous pouvez utiliser les modules DateTime, Time et Schedule de Python. 1. Le module DateTime est utilisé pour enregistrer et planifier le temps d'apprentissage. 2. Le module de temps aide à définir l'étude et le temps de repos. 3. Le module de planification organise automatiquement des tâches d'apprentissage hebdomadaires.

Python: Explorer ses applications principales Python: Explorer ses applications principales Apr 10, 2025 am 09:41 AM

Python est largement utilisé dans les domaines du développement Web, de la science des données, de l'apprentissage automatique, de l'automatisation et des scripts. 1) Dans le développement Web, les cadres Django et Flask simplifient le processus de développement. 2) Dans les domaines de la science des données et de l'apprentissage automatique, les bibliothèques Numpy, Pandas, Scikit-Learn et Tensorflow fournissent un fort soutien. 3) En termes d'automatisation et de script, Python convient aux tâches telles que les tests automatisés et la gestion du système.

Python: automatisation, script et gestion des tâches Python: automatisation, script et gestion des tâches Apr 16, 2025 am 12:14 AM

Python excelle dans l'automatisation, les scripts et la gestion des tâches. 1) Automatisation: La sauvegarde du fichier est réalisée via des bibliothèques standard telles que le système d'exploitation et la fermeture. 2) Écriture de script: utilisez la bibliothèque PSUTIL pour surveiller les ressources système. 3) Gestion des tâches: utilisez la bibliothèque de planification pour planifier les tâches. La facilité d'utilisation de Python et la prise en charge de la bibliothèque riche en font l'outil préféré dans ces domaines.

See all articles