🚀 Essayez Zilliz Cloud, la version entièrement gérée de Milvus, gratuitement—découvrez des performances 10x plus rapides ! Essayez maintenant>>

milvus-logo
LFAI
  • Home
  • Blog
  • Pourquoi choisir FastAPI plutôt que Flask ?

Pourquoi choisir FastAPI plutôt que Flask ?

  • Engineering
December 03, 2021
Yunmei

Pour vous aider à démarrer rapidement avec Milvus, la base de données vectorielle open-source, nous avons publié un autre projet open-source affilié, Milvus Bootcamp sur GitHub. Le Milvus Bootcamp fournit non seulement des scripts et des données pour les tests de référence, mais il inclut également des projets qui utilisent Milvus pour créer des produits minimum viables (MVP), tels qu'un système de recherche d'images inversées, un système d'analyse vidéo, un chatbot d'assurance qualité ou un système de recommandation. Vous pouvez apprendre à appliquer la recherche de similarité vectorielle dans un monde rempli de données non structurées et acquérir une expérience pratique dans le Milvus Bootcamp.

2.png 2.png

Nous fournissons des services frontaux et dorsaux pour les projets de Milvus Bootcamp. Cependant, nous avons récemment pris la décision de changer le cadre web adopté de Flask à FastAPI.

Cet article vise à expliquer notre motivation derrière un tel changement dans le cadre web adopté pour Milvus Bootcamp en clarifiant pourquoi nous avons choisi FastAPI plutôt que Flask.

Cadres web pour Python

Un cadre web fait référence à une collection de paquets ou de modules. Il s'agit d'un ensemble d'architectures logicielles pour le développement web qui vous permet d'écrire des applications ou des services web et vous évite de gérer des détails de bas niveau tels que les protocoles, les sockets ou la gestion des processus/threads. L'utilisation d'un cadre web peut réduire considérablement la charge de travail liée au développement d'applications web, car vous pouvez simplement "brancher" votre code dans le cadre, sans avoir à vous préoccuper davantage de la mise en cache des données, de l'accès à la base de données et de la vérification de la sécurité des données. Pour plus d'informations sur ce qu'est un framework web pour Python, voir Frameworks web.

Il existe différents types de frameworks web Python. Les plus courants sont Django, Flask, Tornado et FastAPI.

Flask

3.png 3.png

Flask est un micro-cadre léger conçu pour Python, avec un noyau simple et facile à utiliser qui vous permet de développer vos propres applications web. En outre, le noyau de Flask est également extensible. Par conséquent, Flask prend en charge l'extension à la demande de différentes fonctions pour répondre à vos besoins personnalisés au cours du développement d'une application web. En d'autres termes, avec une bibliothèque de divers plug-ins dans Flask, vous pouvez développer des sites web puissants.

Flask présente les caractéristiques suivantes :

  1. Flask est un micro-cadre qui ne s'appuie pas sur d'autres outils spécifiques ou composants de bibliothèques tierces pour fournir des fonctionnalités partagées. Flask n'a pas de couche d'abstraction de base de données et ne nécessite pas de validation de formulaire. Cependant, Flask est très extensible et permet d'ajouter des fonctionnalités d'application d'une manière similaire aux implémentations au sein de Flask lui-même. Les extensions pertinentes comprennent les mappeurs objet-relationnel, la validation des formulaires, le traitement des téléchargements, les technologies d'authentification ouvertes et certains outils courants conçus pour les cadres d'application web.
  2. Flask est un cadre d'application web basé sur WSGI (Web Server Gateway Interface). WSGI est une interface simple qui relie un serveur web à une application web ou à un cadre défini pour le langage Python.
  3. Flask comprend deux bibliothèques de fonctions principales, Werkzeug et Jinja2. Werkzeug est une boîte à outils WSGI qui met en œuvre des objets de demande et de réponse ainsi que des fonctions pratiques, ce qui vous permet de construire des cadres web par-dessus. Jinja2 est un moteur de templates complet et populaire pour Python. Il prend totalement en charge l'Unicode et dispose d'un environnement d'exécution sandbox intégré, facultatif mais largement adopté.

FastAPI

4.png 4.png

FastAPI est un framework moderne d'applications web en Python qui offre le même niveau de performance que Go et NodeJS. Le cœur de FastAPI est basé sur Starlette et Pydantic. Starlette est une boîte à outils ASGI(Asynchronous Server Gateway Interface) légère pour construire des services Asyncio de haute performance. Pydantic est une bibliothèque qui définit la validation, la sérialisation et la documentation des données sur la base des indications de type de Python.

FastAPI présente les caractéristiques suivantes :

  1. FastAPI est un cadre d'application web basé sur ASGI, une interface de protocole de passerelle asynchrone reliant les services de protocole de réseau et les applications Python. FastAPI peut gérer une variété de types de protocoles communs, y compris HTTP, HTTP2 et WebSocket.
  2. FastAPI est basé sur Pydantic, qui fournit la fonction de vérification du type de données de l'interface. Vous n'avez pas besoin de vérifier en plus les paramètres de votre interface, ni d'écrire du code supplémentaire pour vérifier si les paramètres sont vides ou si le type de données est correct. L'utilisation de FastAPI permet d'éviter les erreurs humaines dans le code et d'améliorer l'efficacité du développement.
  3. FastAPI supporte les documents dans deux formats - OpenAPI (anciennement Swagger) et Redoc. Par conséquent, en tant qu'utilisateur, vous n'avez pas besoin de passer du temps à écrire des documents d'interface supplémentaires. Le document OpenAPI fourni par FastAPI est montré dans la capture d'écran ci-dessous.

5.png 5.png

Flask et FastAPI

Le tableau ci-dessous montre les différences entre Flask et FastAPI à plusieurs égards.

FastAPIFlask
Passerelle d'interfaceASGIWSGI
Cadre asynchrone
PerformancePlus rapidePlus lentes
Document interactifOpenAPI, RedocAucune
Vérification des données
Coûts de développementPlus basPlus élevés
Facilité d'utilisationPlus faiblePlus élevée
FlexibilitéMoins flexiblePlus flexible
CommunautéPlus petitePlus active

Pourquoi FastAPI ?

Avant de décider quel framework d'application web Python choisir pour les projets de Milvus Bootcamp, nous avons fait des recherches sur plusieurs frameworks courants, y compris Django, Flask, FastAPI, Tornado, et bien d'autres. Étant donné que les projets de Milvus Bootcamp servent de référence pour vous, notre priorité est d'adopter un framework externe extrêmement léger et habile. Selon cette règle, nous avons réduit nos choix à Flask et FastAPI.

Vous pouvez voir la comparaison entre les deux frameworks web dans la section précédente. Ce qui suit est une explication détaillée de notre motivation à choisir FastAPI plutôt que Flask pour les projets de Milvus Bootcamp. Il y a plusieurs raisons à cela :

1. Performance

La plupart des projets de Milvus Bootcamp sont construits autour de systèmes de recherche d'images inversées, de chatbots d'assurance qualité, de moteurs de recherche de texte, qui ont tous des exigences élevées en matière de traitement de données en temps réel. Par conséquent, nous avons besoin d'un cadre avec des performances exceptionnelles, ce qui est exactement un point fort de FastAPI. Par conséquent, du point de vue de la performance du système, nous avons décidé de choisir FastAPI.

2. Efficacité

Lorsque vous utilisez Flask, vous devez écrire du code pour la vérification du type de données dans chacune des interfaces afin que le système puisse déterminer si les données d'entrée sont vides ou non. Cependant, en prenant en charge la vérification automatique du type de données, FastAPI permet d'éviter les erreurs humaines de codage pendant le développement du système et peut considérablement améliorer l'efficacité du développement. Bootcamp se positionne comme un type de ressource de formation. Cela signifie que le code et les composants que nous utilisons doivent être intuitifs et très efficaces. À cet égard, nous avons choisi FastAPI pour améliorer l'efficacité du système et l'expérience de l'utilisateur.

3. Cadre asynchrone

FastAPI est par nature un framework asynchrone. À l'origine, nous avons publié quatre démonstrations, la recherche d'images inversées, l'analyse vidéo, le chatbot d'assurance qualité et la recherche de similarités moléculaires. Dans ces démonstrations, vous pouvez télécharger des ensembles de données et le message "demande reçue" s'affiche immédiatement. Lorsque les données sont téléchargées vers le système de démonstration, vous recevez un autre message indiquant que le téléchargement des données a été effectué avec succès. Il s'agit d'un processus asynchrone qui nécessite un cadre de travail prenant en charge cette fonctionnalité. FastAPI est lui-même un cadre asynchrone. Afin d'aligner toutes les ressources Milvus, nous avons décidé d'adopter un ensemble unique d'outils de développement et de logiciels pour Milvus Bootcamp et Milvus Demos. Par conséquent, nous avons changé le cadre de Flask à FastAPI.

4. Documents interactifs automatiques

De manière traditionnelle, lorsque vous avez fini d'écrire le code pour le côté serveur, vous devez écrire un document supplémentaire pour créer une interface, puis utiliser des outils tels que Postman pour les tests d'API et le débogage. Qu'en est-il si vous voulez seulement commencer rapidement avec la partie développement côté serveur web des projets dans Milvus Bootcamp sans écrire de code supplémentaire pour créer une interface ? FastAPI est la solution. En fournissant un document OpenAPI, FastAPI peut vous éviter de tester ou de déboguer les API et de collaborer avec les équipes frontales pour développer une interface utilisateur. Avec FastAPI, vous pouvez toujours essayer rapidement l'application construite avec une interface automatique mais intuitive sans effort supplémentaire de codage.

5. Convivialité

FastAPI est plus facile à utiliser et à développer, ce qui vous permet d'accorder plus d'attention à la mise en œuvre spécifique du projet lui-même. Sans passer trop de temps à développer des cadres web, vous pouvez vous concentrer davantage sur la compréhension des projets dans Milvus Bootcamp.

Récapitulatif

Flask et FlastAPI ont leurs propres avantages et inconvénients. En tant que framework d'application web émergent, FlastAPI, à la base, est construit sur des toolkits et des bibliothèques matures, Starlette et Pydantic. FastAPI est un framework asynchrone très performant. Sa dextérité, son extensibilité et sa prise en charge de la vérification automatique des types de données, ainsi que de nombreuses autres caractéristiques puissantes, nous ont incités à adopter FastAPI comme cadre de travail pour les projets Milvus Bootcamp.

Veuillez noter que vous devez choisir le framework approprié en fonction de votre scénario d'application si vous souhaitez construire un système de recherche de similarités vectorielles en production.

A propos de l'auteur

Yunmei Li, ingénieur de données chez Zilliz, est diplômée en informatique de l'Université des sciences et technologies de Huazhong. Depuis qu'elle a rejoint Zilliz, elle travaille à l'exploration de solutions pour le projet open source Milvus et aide les utilisateurs à appliquer Milvus dans des scénarios réels. Elle se concentre principalement sur le NLP et les systèmes de recommandation, et elle aimerait approfondir ses connaissances dans ces deux domaines. Elle aime passer du temps seule et lire.

Vous cherchez d'autres ressources ?

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

Continuer à Lire