Python >> Tutoriel Python >  >> Python

Une introduction pour débutant aux meilleurs frameworks Web Python en 2022

Puisque vous lisez ceci, vous pouvez supposer que vous êtes intéressé par Python, ou peut-être avez-vous déjà commencé à apprendre ce langage génial .

Cela ne semble pas trop intimidant, n'est-ce pas ? Vous pouvez coder, après tout, il suffit donc de saisir les différences de syntaxe.

Alors, passons à la vitesse supérieure et parlons de acquérir une expérience appropriée en Python.

Discutons de la création de votre premier Python projet.

Par où commencer ?

Avec une idée, évidemment, mais ce ne sera pas un problème. Vous avez sûrement déjà plusieurs grands concepts enfermés en toute sécurité dans le coffre-fort de votre esprit, attendant juste un peu de ce précieux temps libre et de cette attention.

Quelle est la prochaine, alors ? Le choix d'un cadre.

Et c'est là que commence le véritable casse-tête, car l'écosystème des frameworks Python est assez étendu et varié.

Dans cet article, nous allons décrire les frameworks Python les meilleurs et les plus populaires. Cela devrait être plus que suffisant pour que vous choisissiez le bon et que vous commenciez.

Attention, cependant, que cette liste est plutôt subjective. Il est né principalement de notre expérience collective d'utilisation des frameworks suivants dans des projets commerciaux.

Que sont les cadres Web ?

Avant de choisir un cadre particulier, assurons-nous que nous sommes sur la même longueur d'onde en ce qui concerne les définitions.

Qu'avons-nous exactement à l'esprit lorsque nous parlons d'un framework d'application Web ?

En bref, un framework Web est un ensemble de fonctionnalités génériques qui facilite la création d'applications Web pour le développeur. Il sert de raccourci qui élimine le besoin d'écrire du code inutile en réutilisant les solutions existantes. En conséquence, cela réduit le temps que vos développeurs doivent consacrer à l'écriture de code et rend leur travail plus efficace.

Les frameworks Web peuvent être divisés en deux catégories :frontend et backend. Le premier, également connu sous le nom de framework CSS, concerne les parties de l'application Web que les utilisateurs voient et avec lesquelles ils interagissent. Ce dernier concerne les aspects cachés de la création d'une application Web.

L'avantage crucial de l'utilisation des frameworks Python est que vous pouvez mélanger et faire correspondre des éléments frontend et backend dans chaque framework pour obtenir le résultat souhaité. Vous pouvez soit vous concentrer sur l'un d'entre eux, soit en fusionner plusieurs, selon l'envergure de votre projet.

En offrant des solutions prêtes à l'emploi, les frameworks d'applications Web aident les développeurs à ajouter des éléments complexes et dynamiques qui seraient autrement très difficiles ou chronophages à développer à partir de zéro.

Quels sont les avantages d'utiliser un framework d'application Web Python ?

L'utilisation d'un framework est-elle nécessaire lorsque vous travaillez avec Python ? La réponse courte est :non, ce n'est pas nécessaire.

Bien sûr, vous pouvez écrire en Python sans cadre de développement Web. Cependant, en utiliser un est extrêmement utile lors de la création d'applications Web et de sites Web, car Python n'a pas été écrit comme un langage de script Web direct, comme PHP l'était, par exemple. Donc, des choses courantes comme la connexion aux bases de données ne lui sont pas natives, et les frameworks sont pratiques.

Les avantages de l'utilisation d'un framework Python incluent, en plus de faciliter évidemment la création d'applications Web en Python, de travailler avec un code plus organisé, une productivité accrue et un processus de développement Web simplifié.

Les frameworks disposent de bibliothèques pour gérer les tâches courantes et d'outils de débogage et de test de vos applications. Avec un framework Python, la mise en œuvre et l'intégration sont plus faciles, la documentation est meilleure, l'efficacité augmente et l'ensemble du processus est plus sécurisé, car toutes les bibliothèques du framework sont fortement testées.

De plus, il existe des communautés qui développent des logiciels en utilisant la même base de code, donc si vous avez des questions, vous pouvez facilement trouver de l'aide. En résumé, si votre langage dispose d'un bon framework bien soutenu par la communauté, il n'y a pas vraiment de raison de ne pas l'utiliser.

Quels sont les inconvénients de l'utilisation d'un framework d'application Web Python ?

L'utilisation d'un framework Web Python présente évidemment certains inconvénients. Premièrement, vous êtes lié à un outil particulier, ce qui limite vos options pour passer à un autre. Lorsque vous travaillez sur un projet existant, vous devrez peut-être également refactoriser votre code pour qu'il fonctionne avec le framework de développement Web.

De plus, certains des frameworks Python peuvent ne pas convenir du tout aux petits projets, et d'autres totalement incompréhensibles pour les débutants.

Enfin, les frameworks Web Python peuvent prendre un certain temps à apprendre et être assez complexes. De cette façon, vous ne comprendrez peut-être pas comment utiliser les composants individuels des frameworks en raison de la grande taille de certains d'entre eux et passerez trop de temps à vous y habituer.

Cela dit, les inconvénients ne l'emportent pas sur les avantages de travailler avec les frameworks de développement Web Python. Considérons maintenant quelques éléments que vous devez savoir avant de choisir le framework Python qui vous convient.

Que devez-vous savoir avant de choisir un framework Web Python ?

Avant de vous lancer et de choisir un framework de développement Web Python, gardez à l'esprit sa taille et sa complexité :certains peuvent être assez volumineux et difficiles à apprendre.

Vous devez également tenir compte des fonctionnalités offertes par le framework, car certains offrent plus d'extensions et d'outils que d'autres.

Quelque chose que vous devez également prendre en compte est la documentation disponible pour le framework et la licence qu'il utilise ; certains sont des logiciels open source (OSS), pendant que d'autres le sont logiciel à source fermée (CSS), ce qui signifie que le logiciel utilise un code propriétaire et étroitement protégé.

3 types de frameworks Python

Essentiellement, nous catégorisons les frameworks Python en trois types :les frameworks à pile complète (également connus sous le nom d'entreprise), les microframeworks et les frameworks asynchrones (asynchrones). Avant de passer à la discussion des meilleurs frameworks Web Python en 2022, examinons de plus près ces catégories.

1. Cadre de pile complète

Si vous envisagez de développer une grande structure remplie de nombreuses exigences et fonctionnalités, un framework full-stack sera le meilleur choix pour vous et votre projet.

Ces frameworks constituent une solution tout-en-un pour tous vos besoins. En règle générale, les générateurs de formulaires, la validation des formulaires et les modèles de mise en page, entre autres, sont disponibles dans un cadre de pile complet habituel.

2. Microframework

En revanche, si vous créez une petite application simple, pensez plutôt à choisir un microframework.

Les microframeworks sont légers et n'offrent pas de fonctionnalités et fonctionnalités supplémentaires, telles que la couche d'abstraction de base de données, la validation de formulaires et des outils et bibliothèques spécifiques. Les développeurs qui les utilisent devront donc ajouter manuellement beaucoup de code et des exigences supplémentaires.

3. Framework asynchrone

Les frameworks asynchrones (async), qui deviennent de plus en plus populaires, sont un type de microframework qui permet de gérer un grand nombre de connexions simultanées. Habituellement, un framework asynchrone conçu pour Python utilise la bibliothèque asyncio du langage de programmation.

Frameworks Web Python à pile complète

Django

Django est l'un des frameworks Python les plus populaires . Offrir tous les outils dont vous avez besoin pour créer une application Web dans un seul package, du bas au haut de gamme, est sa marque de fabrique.

Les applications Django sont basées sur un modèle de conception similaire à MVC, le soi-disant modèle MVT (Model-View-Template). Les modèles sont définis à l'aide de Django ORM, tandis que les bases de données SQL sont principalement utilisées comme stockage.

Le framework dispose d'un panneau d'administration intégré, permettant une gestion facile du contenu de la base de données. Avec une configuration minimale, ce panneau est généré automatiquement en fonction des modèles définis.

Les vues peuvent inclure à la fois des fonctions et des classes, et l'attribution des URL aux vues est effectuée à un seul emplacement (le fichier urls.py), de sorte qu'après avoir examiné ce fichier unique, vous pouvez savoir quelles URL sont prises en charge . Les modèles sont créés à l'aide d'un système Django Templates assez simple.

Django est apprécié pour son solide support communautaire et sa documentation détaillée décrivant les fonctionnalités du framework. Cette documentation associée à l'obtention d'un environnement complet après l'installation rend le seuil d'entrée plutôt bas. Une fois que vous aurez parcouru le didacticiel officiel, vous serez en mesure de faire la plupart des choses nécessaires pour créer une application.

Malheureusement, le monolithisme de Django a aussi ses inconvénients. Il est difficile, mais pas impossible, de remplacer l'un des éléments intégrés par une autre implémentation. Par exemple, l'utilisation d'un autre ORM (comme SQLAlchemy) nécessite l'abandon ou la reconstruction complète d'éléments tels que le panneau d'administration, l'autorisation, la gestion de session ou la génération de formulaires.

Parce que Django est complet mais peu flexible, il convient aux applications standards (c'est-à-dire la grande majorité des projets logiciels). Cependant, si vous devez implémenter une conception non conventionnelle, cela conduit à des difficultés avec le cadre plutôt qu'à une programmation agréable.

Exemple de modèle dans Django

web2py

Créé en 2007, web2py est un framework conçu à l'origine comme un outil pédagogique pour les étudiants, la principale préoccupation de ses auteurs était donc la facilité de développement et de déploiement.

Web2py est fortement inspiré de Django et Ruby on Rails, partageant l'idée de convention plutôt que configuration. En d'autres termes, web2py fournit de nombreux défauts raisonnables qui permettent aux développeurs de démarrer rapidement.

Cette approche signifie également qu'il y a beaucoup de goodies livrés avec web2py. Vous y trouverez tout ce que vous attendez d'un framework Web, y compris un serveur intégré, des assistants générateurs de HTML, des formulaires, des validateurs et bien d'autres - rien d'inhabituel jusqu'à présent, pourrait-on dire. La prise en charge de plusieurs moteurs de base de données est soignée, bien qu'il s'agisse d'un atout assez courant parmi les frameworks Web actuels.

Cependant, certaines autres fonctionnalités groupées peuvent vous surprendre, car elles ne sont pas présentes dans d'autres frameworks :

  • aides pour la création de sites compatibles JavaScript avec jQuery et Ajax ;
  • planificateur et cron ;
  • Aide à l'authentification à deux facteurs ;
  • expéditeur du SMS ;
  • un système de billetterie d'événements, permettant l'attribution automatique aux développeurs des problèmes survenus dans l'environnement de production.

Le framework prétend fièrement être une solution complète, fournissant tout ce dont vous pourriez avoir besoin.

Web2py a une documentation complète disponible en ligne. Il guide les nouveaux arrivants étape par étape, en commençant par une courte introduction au langage Python. L'introduction est parfaitement liée au reste du manuel, démontrant différents aspects de web2py de manière conviviale, avec de nombreux extraits de code et des captures d'écran.

Malgré tous ses avantages concurrentiels, la communauté de web2py est nettement plus petite que celle de Django, ou même de Pyramid. Moins de développeurs l'utilisent, ce qui signifie que vos chances d'obtenir de l'aide et du support sont moindres. La liste de diffusion officielle est pratiquement inactive.

Exemple de modèle dans web2py

Pyramide

Pyramid, le troisième framework Web Python remarquable, est enraciné dans deux autres produits qui ne sont plus développés :Pylons et repoze.bfg. L'héritage laissé par ses prédécesseurs a fait évoluer Pyramid vers un projet très mature et stable.

Les philosophies de Pyramid et Django diffèrent considérablement. Contrairement à Django, Pyramid est simple à personnaliser, vous permettant de créer des fonctionnalités d'une manière que les auteurs du framework eux-mêmes n'avaient pas prévu. Cela n'oblige pas le programmeur à utiliser les idiomes du framework ; il est censé être un échafaudage solide pour des projets complexes ou hautement non standard.

Pyramid s'efforce d'être indépendant de la persistance. Bien qu'il n'y ait pas de module d'accès à la base de données intégré, une pratique courante consiste à combiner Pyramid avec le puissant ORM SQLAlchemy mature. Bien sûr, ce n'est que la voie la plus populaire. Les programmeurs sont libres de choisir les pratiques qui leur conviennent le mieux, comme l'utilisation de l'ORM peewee, l'écriture de requêtes SQL brutes ou l'intégration à une base de données NoSQL, pour n'en nommer que quelques-unes.

Toutes les options sont ouvertes, bien que cette approche nécessite un peu d'expérience pour ajouter en douceur les mécanismes de persistance souhaités au projet. Il en va de même pour les autres composants, tels que les modèles.

L'ouverture et la liberté sont la raison d'être de Pyramid. Les modules fournis avec lui concernent uniquement la couche Web et les utilisateurs sont encouragés à choisir librement des packages tiers qui prendront en charge d'autres aspects de leurs projets.

Cependant, ce modèle entraîne une surcharge notable au début de tout nouveau projet, car vous devez passer du temps à choisir et à intégrer les outils avec lesquels votre équipe est à l'aise. Néanmoins, une fois que vous vous êtes efforcé de prendre des décisions supplémentaires au cours des premières étapes du travail, vous êtes récompensé par une configuration qui facilite et facilite le démarrage d'un nouveau projet et son développement ultérieur.

Pyramid est un cadre autoproclamé "commencez petit, finissez grand, restez fini". Cela en fait un outil approprié pour les développeurs expérimentés qui n'ont pas peur de jouer au long jeu et de travailler très dur au début, sans livrer une seule fonctionnalité dans les premiers jours. Les programmeurs moins expérimentés peuvent se sentir un peu intimidés.

Exemple d'application "Hello world" dans Pyramid

Tordu

Avec Twisted, les développeurs Python ont pu faire de la programmation asynchrone bien avant que ce ne soit cool. Twisted est l'un des projets Python les plus anciens et les plus matures.

Lancé à l'origine en 2002, Twisted est même antérieur à PEP8, donc le code du projet ne suit pas les fameuses recommandations du guide de style de code. Certes, cela peut quelque peu décourager les gens de l'utiliser de nos jours.

Le cœur de Twisted est un moteur de réseau basé sur les événements appelé reactor . Il est utilisé pour planifier et appeler des rappels définis par l'utilisateur.

Au début, les développeurs devaient utiliser des rappels explicites en définissant des fonctions et en les transmettant séparément pour les cas où une opération réussissait et quand elle échouait.

Bien que cette technique soit convaincante, elle pourrait également conduire à ce que nous savons depuis les débuts de JavaScript :l'enfer des rappels. En d'autres termes, le code résultant était difficile à lire et à analyser.

À un moment donné, Twisted a introduit inlineCallbacks, la notation pour écrire du code asynchrone aussi simple à lire qu'un code synchrone normal. Cette solution a très bien fonctionné avec la syntaxe de Python et a grandement influencé la boîte à outils asynchrone moderne de la bibliothèque standard, asyncio.

Le plus grand avantage de ce framework est que bien que Twisted ne soit qu'un moteur avec quelques extensions groupées, il existe de nombreuses extensions supplémentaires disponibles pour étendre ses fonctionnalités. Ils permettent à la fois la programmation réseau de bas niveau (TCP/USP) et le travail de haut niveau applicatif (HTTP, IMAP, SHH, etc.).

Cela fait de Twisted un choix parfait pour la rédaction de services spécialisés ; cependant, ce n'est pas un bon candidat pour les applications Web classiques. Les développeurs devraient écrire beaucoup de choses par eux-mêmes pour obtenir les fonctionnalités qu'ils tiennent pour acquises avec Django.

Twisted est activement maintenu. Il y a un effort en cours pour migrer tout son code pour être compatible avec Python 3. La fonctionnalité de base a été réécrite il y a quelque temps, mais de nombreux modules tiers sont toujours incompatibles avec les nouvelles versions de l'interpréteur.

Cela peut soulever des inquiétudes quant à savoir si Twisted est le meilleur choix pour les nouveaux projets. D'un autre côté, cependant, il est plus mature que certaines solutions basées sur l'asyncio. De plus, Twisted existe depuis un certain temps maintenant, ce qui signifie qu'il sera sans aucun doute maintenu au moins pendant un bon moment.

code inlineCallbacks dans Twisted

Masonite

Masonite est un framework relativement nouveau qui gagne régulièrement du terrain parmi les développeurs. Depuis sa première sortie en décembre 2017, il a amassé plus de 1 300 étoiles sur GitHub.

Il est livré avec de nombreuses fonctionnalités prêtes à l'emploi et une architecture hautement extensible. Rapide et facile à installer, Masonite est un framework MVC et piles incluses compatible avec Python 3.4+. Il est similaire à Django en ce sens qu'il s'efforce de fournir tout ce dont un développeur Web peut avoir besoin.

Pour accroître l'adoption du framework par les développeurs, son créateur a privilégié la facilité d'utilisation et l'accès à des supports de formation de haute qualité. Masonite propose une documentation complète et de nombreux tutoriels pour les développeurs débutants et expérimentés, ainsi qu'un canal Slack actif.

Le framework propose plus d'une douzaine de commandes permettant aux développeurs de créer des vues, des contrôleurs, des files d'attente de tâches, des modèles et autres à partir de la ligne de commande.

Les autres avantages clés incluent Orator, un ORM de style Active Record, ainsi qu'un moteur de routage simple et un système de migration.

Contrôleur Masonite unique vu dans la nomenclature des autres frameworks

Microframeworks Python

Flacon

Flask est considéré comme un microframework. Il est livré avec des fonctionnalités de base, tout en permettant une extension facile. Par conséquent, Flask fonctionne davantage comme le ciment qui vous permet de joindre des bibliothèques entre elles.

Par exemple, "pure Flask" ne prend en charge aucun stockage, mais il existe de nombreuses implémentations différentes que vous pouvez installer et utiliser de manière interchangeable à cette fin (telles que Flask-SQLAlchemy, Flask-MongoAlchemy, et Flask-Redis). De même, le système de modèle de base est Jinja2, mais vous pouvez utiliser un remplacement (comme Mako).

La devise de ce framework est "une goutte à la fois", et cela se reflète dans sa documentation complète. La connaissance de la façon de construire une application est acquise par portions ici; après avoir lu quelques paragraphes, vous serez en mesure d'effectuer des tâches de base.

Vous n'avez pas besoin de connaître les choses les plus avancées tout de suite, vous les apprendrez une fois que vous en aurez réellement besoin. Grâce à cela, les étudiants de Flask peuvent acquérir des connaissances en douceur et éviter l'ennui, ce qui rend Flask adapté à l'apprentissage.

Un grand nombre d'extensions Flask, malheureusement, ne sont pas supportées ainsi que le framework lui-même . Il arrive assez souvent que les plug-ins ne soient plus développés ou que leur documentation soit obsolète. Dans de tels cas, vous devez passer un peu de temps à rechercher sur Google un remplaçant qui offre des fonctionnalités similaires et qui est toujours activement pris en charge.

Lors de la création de votre application avec des packages de différents auteurs, vous devrez peut-être mettre un peu de temps pour les intégrer les uns aux autres. Vous trouverez rarement des instructions prêtes à l'emploi sur la façon de procéder dans la documentation des plug-ins, mais dans de telles situations, la communauté Flask et des sites Web tels que Stack Overflow devraient vous aider.

Exemple de vue dans Flask

Bouteille

Bottle est un microframework conforme à WSGI qui est rapide et léger.

L'un de ses principaux avantages est le processus de distribution de fichier unique, qui facilite le partage et le téléchargement de l'application. Pour commencer à coder, il vous suffit de télécharger bottle.py dans le répertoire du projet.

Commodément, l'ensemble du framework tient dans un seul fichier. Et puisque Bottle ne dépend d'aucune bibliothèque externe, il n'est pas nécessaire d'installer quoi que ce soit d'autre pour y accéder.

De par sa conception, Bottle est flexible, facile à utiliser et facilite le développement d'applications Web. Cependant, en raison de son modèle de distribution à fichier unique, le framework est mieux adapté aux petites applications qu'aux projets plus importants.

Un service simple dans Bottle pour obtenir l'heure actuelle dans un fuseau horaire demandé

Faucon

Falcon est un autre microframework sur notre liste. L'objectif du projet Falcon est de créer une base minimaliste pour la création d'applications Web où la moindre surcharge compte.

Les auteurs du framework affirment qu'il s'agit d'une boîte à outils bare-metal et sans ballonnement pour créer du code backend et des microservices très rapides. De plus, il est compatible avec Python 2 et 3.

Un gros avantage de Falcon est qu'il est en effet très rapide. Les benchmarks publiés sur son site Web montrent un avantage incroyable par rapport aux solutions grand public comme Django ou Flask.

L'inconvénient, cependant, est que Falcon offre très peu de choses pour commencer. Il y a le routage, les middlewares, les hooks, et c'est essentiellement tout. Il n'y a pas d'extras :pas de validation, pas d'authentification, etc. C'est au développeur d'étendre les fonctionnalités si nécessaire.

Falcon suppose qu'il sera utilisé pour créer des API REST qui parlent JSON. Si tel est le cas, vous n'avez vraiment besoin d'aucune configuration. Vous pouvez simplement vous asseoir et coder.

Ce microframework pourrait être une proposition intéressante pour la mise en œuvre de services hautement personnalisés qui exigent les meilleures performances possibles. Falcon est un excellent choix lorsque vous ne voulez pas ou ne pouvez pas investir dans des solutions asynchrones.

Si vous pensez que "parfois la solution la plus simple est la meilleure", vous devriez certainement envisager Falcon.

Exemple d'application "Hello world" dans Falcon

Japon

Avez-vous déjà imaginé gérer 1 000 000 requêtes par seconde avec Python ?

Cela semble irréel, car Python n'est pas le langage de programmation le plus rapide. Mais lorsqu'une décision brillante a été prise pour ajouter asyncio à la bibliothèque standard, cela a ouvert d'innombrables possibilités.

Japronto est un microframework qui exploite certains d'entre eux. En conséquence, ce framework Python a pu franchir la barrière magique du million de requêtes traitées par seconde.

Vous ne savez peut-être pas exactement comment cela est possible.

Tout se résume à 2 atouts dans la manche de Japronto :uvloop et PicoHTTPParser. Uvloop est un backend asyncio basé sur libuv, tandis que PicoHTTPParser est un analyseur d'en-têtes HTTP léger écrit en C. Tous les composants de base du framework sont également implémentés en C. Une grande variété d'optimisations et d'astuces de bas niveau sont utilisées pour ajuster les performances. /P>

Japronto est conçu pour des tâches spéciales qui ne pourraient pas être accomplies avec des frameworks grand public gonflés. Il convient parfaitement aux problèmes où chaque nanoseconde compte. Les développeurs compétents, obsédés par l'optimisation, récolteront tous ses avantages possibles.

De plus, Japronto est censé fournir une base solide pour les microservices utilisant des API REST avec un minimum de surcharge. En d'autres termes, il n'y a pas grand-chose dans la boîte. Les développeurs n'ont qu'à configurer le routage et décider quelles routes doivent utiliser des gestionnaires synchrones ou asynchrones.

Cela peut sembler contre-intuitif, mais si une requête peut être traitée de manière synchrone, vous ne devriez pas essayer de le faire de manière asynchrone, car la surcharge de commutation entre les coroutines limitera les performances.

Ce qui est assez regrettable, c'est que Japronto n'est pas activement développé. D'autre part, le projet est sous licence MIT et l'auteur affirme qu'il est prêt à accepter toute contribution. Comme Sanic, le framework est conçu pour fonctionner avec les versions Python 3.5+.

Exemple d'application "Hello world" au Japon

FastAPI

FastAPI vous permet de créer des API avec Python 3.6 ou une version plus récente, basées sur des conseils de type Python standard. Comme son nom l'indique, le framework est l'un des frameworks Web Python les plus rapides et les plus efficaces.

Basé sur Starlette, FastAPI est livré avec toutes ses fonctionnalités, y compris la prise en charge de GraphQL, les modèles et autres. Étant donné que Starlette utilise ASGI, la nouvelle norme pour les frameworks Web asynchrones, elle offre également certaines fonctionnalités non disponibles dans les frameworks WSGI, telles que WebSockets ou les tâches en arrière-plan.

L'un des principaux avantages de FastAPI, outre la vitesse de développement, est qu'il permet de minimiser la duplication de code et les bugs. Le cadre est très intuitif; la prise en charge de l'éditeur et la saisie semi-automatique signifient moins de temps passé à déboguer.

FastAPI est également basé sur et entièrement compatible avec OpenAPI et JSON Schema, les normes ouvertes pour les API.

Exemple de code démontrant une validation rapide dans FastAPI

Frameworks Web asynchrones Python

Sani

Sanic diffère considérablement des frameworks susmentionnés car contrairement à eux, il est basé sur asyncio —Boîte à outils de Python pour la programmation asynchrone, fournie avec la bibliothèque standard à partir de la version 3.4.

Afin de développer des projets basés sur Sanic, vous devez d'abord saisir les idées derrière asyncio. Cela implique de nombreuses connaissances théoriques sur les coroutines, des mises en garde sur la programmation simultanée et un raisonnement minutieux sur le flux de données dans l'application.

Une fois que vous maîtrisez Sanic/asyncio et que vous appliquez le framework à un problème approprié, l'effort porte ses fruits. Sanic est particulièrement utile lorsqu'il s'agit de gérer des connexions de longue durée, telles que WebSockets. Si votre projet nécessite la prise en charge de WebSockets ou de nombreux appels d'API externes de longue durée, Sanic est un excellent choix.

Un autre cas d'utilisation de Sanic consiste à écrire une "application glue-web" qui peut servir de médiateur entre deux sous-systèmes avec des API incompatibles. Notez qu'il nécessite au moins Python 3.5, cependant.

Le framework est censé être très rapide. L'une de ses dépendances est uvloop, une alternative de remplacement pour la boucle d'événement intégrée pas si bonne d'asyncio. Uvloop est un wrapper autour de libuv, le même moteur qui alimente Node.js. Selon la documentation uvloop, cela rend l'asyncio 2 à 4 fois plus rapide.

Sanic est un microframework, tout comme Flask. Hormis le routage et d'autres fonctionnalités de base liées au Web, telles que des utilitaires de gestion des cookies et des réponses en continu, il n'y a pas grand-chose à l'intérieur. Sanic imite Flask, par exemple en partageant le concept de Blueprints, de minuscules sous-applications qui permettent aux développeurs de diviser et d'organiser leur code dans des applications plus grandes.

Sanic ne sera pas non plus un bon choix pour les applications CRUD simples qui n'effectuent que des opérations de base de données de base. Cela les rendrait simplement plus compliqués sans aucun avantage visible.

Gestion des WebSockets dans Sanic

aiohttp

Aiohttp est une autre bibliothèque basée sur asyncio, la boîte à outils Python moderne pour écrire du code asynchrone. N'étant pas censé être un framework au sens strict, aiohttp est plutôt une boîte à outils, complétant l'arsenal asynchrone avec tout ce qui concerne HTTP.

Cela signifie que aiohttp est utile non seulement pour écrire des applications serveur, mais aussi pour les clients. Les deux bénéficieront des avantages d'asyncio, surtout la capacité de gérer des milliers de connexions en même temps, à condition que la majorité des opérations impliquent des appels d'E/S.

Des clients aussi puissants sont parfaits lorsque vous devez émettre de nombreux appels d'API à la fois, par exemple pour extraire des pages Web. Sans asyncio, vous devriez utiliser le threading ou le multitraitement, qui sont plus difficiles à maîtriser et nécessitent beaucoup plus de mémoire.

Outre la création d'applications autonomes, les clients d'aiohttp sont un excellent complément à toute application basée sur asyncio qui doit émettre des appels HTTP non bloquants. Il en va de même pour les WebSockets. Comme ils font partie de la spécification HTTP, vous pouvez vous connecter aux serveurs WebSocket et échanger facilement des messages avec eux.

En ce qui concerne les serveurs, aiohttp vous offre tout ce que vous pouvez attendre d'un microframework. Les fonctionnalités disponibles prêtes à l'emploi incluent le routage, le middleware et les signaux. Cela peut sembler très peu, mais cela suffira pour un serveur Web.

"Qu'en est-il des fonctionnalités restantes ?" vous pouvez demander.

En ce qui concerne ceux-ci, vous pouvez construire le reste des fonctionnalités en utilisant une ou plusieurs bibliothèques compatibles asyncio. Vous en trouverez beaucoup en utilisant des sources comme celle-ci.

Aiohttp est conçu pour les tests. Les développeurs qui souhaitent tester une application basée sur aiohttp trouveront cela extrêmement facile, en particulier avec l'aide de pytest.

Même si aiohttp offre des performances satisfaisantes par défaut, il y a quelques fruits à portée de main que vous pouvez cueillir. Par exemple, vous pouvez installer des librairies supplémentaires :cchardet et aiodns. Aiohttp les détectera automatiquement. Vous pouvez également utiliser le même uvloop qui alimente Sanic.

Last but not least:one definite advantage of aiohttp is that it is being actively maintained and developed. Choosing aiohttp when you build your next application will certainly be a good call.

WebSocket client using aiohttp

Other Python web development frameworks

There are many more Python web frameworks out there you might find interesting and useful. Each of them focuses on a different issue, was built for distinct tasks, or has a particular history.

The first that comes to mind is Zope2, one of the oldest frameworks, still used mainly as part of the Plone CMS. Zope3 (later renamed BlueBream) was created as Zope2’s successor. The framework was supposed to allow for easier creation of large applications but hasn’t won too much popularity, mainly because of the need to master fairly complex concepts (e.g. Zope Component Architecture) very early in the learning process.

Also noteworthy is the Google App Engine, which allows you to run applications written in Python, among others. This platform lets you create applications in any framework compatible with WSGI. The SDK for the App Engine includes a simple framework called webapp2, and this exact approach is often used in web applications adapted to this environment.

Another interesting example is Tornado, developed by FriendFeed and made available by Facebook. This framework includes libraries supporting asynchronicity, so you can build applications that support multiple simultaneous connections (like long polling or WebSocket).

Other libraries similar to Tornado include Pulsar (async) and Gevent (greenlet). These libraries allow you to build any network applications (multiplayer games and chat rooms, for example). They also perform well at handling HTTP requests.

Developing applications using these frameworks and libraries is more difficult and requires you to explore some harder-to-grasp concepts. We recommend getting to them later on, as you venture deeper into the wonderful world of Python.

What is the most popular Python framework?

Stack Overflow, a leading Q&A site for the global developer community, runs an annual Developer Survey that asks its 90,000-strong pool of followers comprehensive questions about their professional lives.

The survey is interesting for many reasons, not least its statistics highlighting the increasing popularity of Python among developers worldwide.

In one of the questions, developers were asked to rate their most loved web frameworks in various programming languages. Python frameworks—including Django and Flask—ranked quite high in the top 10!

What is the easiest Python web framework?

We still haven’t answered one key question:which of these frameworks is the easiest for beginners to learn? Well, in terms of ease of use, smaller frameworks like web2py, Bottle, or Flask would be the best choice. The problem is that usually later on you’ll have to build more of the supporting components by yourself.

So the framework that’s the easiest to set up and use might not be the best for the particular task you have in mind. Depending on what you’re coding, the answer will determine which framework is best for your task.

On top of that, if you’re new to Python, non-technical things like community size and available resources should probably factor into your decision as well.

What is the fastest Python web development framework?

Which Python web framework has the best performance? The one you can finish the project with.

It is unlikely that a rapid response to a very large number of concurrent requests is essential to your success. It is, however, certain that your success depends on developing your project to the point where users can interact with the product. In that case, we would recommend Django.

Final thoughts on choosing the best web framework for Python

Thank you for reading our article on the best Python frameworks in 2022. We hope this summary will help you decide which framework will help you the most and get you started right away.

Python offers an extensive selection of web frameworks, all of which have their strengths and weaknesses. At STX Next, we use whatever framework fits a project best, even learning new ones on the go if needed.

STX Next has grown to become one of the largest Python software agencies in the world with over 200 Python developers on board and over 17 years of experience under our belt. We’re constantly looking for enthusiastic, talented developers who live and breathe Python. If you’re interested in starting your journey with us, check out our current job opportunities.

If you enjoyed this article and would like to learn more, we have a lot of free resources on Python you may also find interesting, such as:

  • Les meilleurs IDE et éditeurs de code Python (selon nos développeurs et la communauté Python)
  • What Is Python Used for? Advantages and Examples Across 7 Industries
  • Python vs. Other Programming Languages:Go, JS, Node.js, Java, Ruby, PHP, R, C++

Should you have any more questions, not only Python-related, don’t hesitate to contact us directly—we’d be happy to help out!