Los frameworks web son herramientas poderosas. Resumen los aspectos comunes de la creación de sitios web y API y nos permiten crear aplicaciones más ricas y estables con menos esfuerzo.
Una amplia gama de frameworks web está disponible para nosotros en Python. Algunos son favoritos comprobados con grandes ecosistemas y comunidades. Otros sobresalen en casos de uso de nicho o para tipos específicos de desarrollo. Sin embargo, otros son prometedores con nuevas razones convincentes que deben considerarse. Siga leyendo para explorar las opciones y encontrar lo que funcione mejor para usted.
Si ya sabe lo que le interesa, use los enlaces a continuación para saltar:
- Cómo Elegir el Marco adecuado para sus Necesidades
- Marcos de pila completa vs. Micro Marcos vs. Asincrónica Marcos
- Python Completo de la Pila de Marcos
- Microframeworks para Python
- Asincrónica Marcos para Python
- Que Python framework web que es mejor para usted?
Si desea ayuda para decidir, también puede ir directamente a nuestro resumen de recomendaciones.
- Cómo Elegir el marco adecuado para Sus Necesidades
- Los frameworks de pila completa vs. Microestructuras vs. Frameworks asincrónicos
- Frameworks de Python de pila completa
- Django
- Pirámide
- Web2Py
- TurboGears
- Masonite
- Microestructuras para Python
- Matraz
- Bottle
- H3: CherryPy
- Falcon
- Marcos asíncronos para python
- Sanic
- FastAPI
- Starlette
- Tornado
- ¿Qué framework web de Python es el mejor para ti?
Cómo Elegir el marco adecuado para Sus Necesidades
Los marcos están diseñados para resolver diferentes problemas y hacer concesiones para servir mejor a sus destinatarios. ¡Si todos tuvieran los mismos objetivos, solo necesitaríamos un marco! A medida que evalúa los marcos, algunas consideraciones importantes incluyen:
- ¿Cuál es el tamaño y la complejidad posibles de lo que está construyendo?
- ¿Prefiere elegir sus propias bibliotecas, configuración y estructura de aplicaciones o desea un conjunto de opciones más seleccionadas por adelantado?
- ¿Qué importancia tendrá el rendimiento para su proyecto?
- ¿Con qué rapidez desea poder desarrollar e implementar su aplicación?
- ¿Cuánto tiempo durará su aplicación y cuántos desarrolladores es probable que trabajen en ella?
Además, considere la calidad de la documentación disponible para las opciones potenciales y el tamaño de la comunidad en torno a un proyecto: esto afecta tanto a la gama de complementos o integraciones existentes que puede aprovechar para hacer que el desarrollo sea más rápido como a la probabilidad de obtener ayuda a medida que se queda atascado.
Tenga en cuenta estos aspectos mientras explora sus opciones, ¡hay muchos de ellos! Dependiendo de la longevidad de su proyecto, también considere si es probable que un marco crezca con usted. ¿Será una buena opción para su aplicación ahora y en el futuro?
Los frameworks de pila completa vs. Microestructuras vs. Frameworks asincrónicos
Los frameworks de Python se pueden dividir aproximadamente en tres campos, frameworks de pila completa, microframes y frameworks asincrónicos.
Los marcos de pila completa generalmente se centran en crear aplicaciones más grandes y con todas las funciones y ofrecen una gran cantidad de funciones comunes listas para usar. Si está buscando construir algo complejo rápidamente o desea valores predeterminados razonables sobre cómo armar una aplicación sin tomar todas las decisiones usted mismo, un marco de pila completa es una buena opción. Los marcos de pila completa generalmente le proporcionan valores predeterminados razonables para comunicarse con bases de datos, crear plantillas para sus vistas, administrar colas, trabajos en segundo plano y otros aspectos comunes de aplicaciones más grandes.
Los micro marcos generalmente se centran en proporcionar un pequeño núcleo de funcionalidad e invitan al desarrollador a tomar sus propias decisiones sobre qué bibliotecas y tecnologías agregar para otras funcionalidades. Esto tiene la ventaja de permitir mucho más control sobre el diseño de la aplicación y puede resultar en un mejor rendimiento de la aplicación. Por lo general, requieren que el desarrollador elija su propia capa de abstracción de la base de datos y otras bibliotecas. Los micro marcos pueden ser una excelente opción para aplicaciones más pequeñas y con un enfoque más estrecho, para el desarrollo de API o para aplicaciones en las que el rendimiento es más importante.
Los marcos asíncronos se centran en ofrecer altos niveles de rendimiento al permitir un gran número de conexiones simultáneas. Si bien puede aumentar significativamente la concurrencia de la mayoría de los frameworks síncronos al emparejarlos con servidores con capacidad asíncrona como gevent, los frameworks asíncronos nativos van un paso más allá con una pila completamente asíncrona. En general, los frameworks asincrónicos requieren más rigor en el estilo de programación y tienen un conjunto más limitado de complementos. Los marcos asíncronos son excelentes cuando necesita proporcionar una funcionalidad específica a un volumen muy alto.
Frameworks de Python de pila completa
Django
Django es el framework de pila completa más popular para Python. Tiene una merecida reputación de ser altamente productivo al crear aplicaciones web complejas. Apodado «el marco web para perfeccionistas con plazos de entrega», su enfoque es el desarrollo rápido con opciones bien documentadas para casos comunes.
Django ha existido por más de una década (primer lanzamiento en 2006) y es maduro, completo, bien documentado y tiene una comunidad muy grande. Es un framework obstinado, lo que significa que toma muchas decisiones para el desarrollador. Los aspectos positivos de este enfoque son que sea más rápido comenzar el desarrollo, integraciones «bendecidas» que simplemente funcionan y más espacio para centrarse en las necesidades personalizadas de su proyecto en lugar de en qué bibliotecas usar. Además, los proyectos de Django tienden a verse bastante similares, lo que facilita a los desarrolladores aumentar rápidamente los proyectos que son nuevos para ellos y a los equipos organizar sus esfuerzos de manera consistente.
Django ofrece mucho desde el primer momento, incluido su propio mapeador de objetos relacionales (ma) para trabajar con bases de datos, un enfoque estándar para la autenticación y autorización, una interfaz de administración generada automáticamente (útil para la creación rápida de prototipos), almacenamiento en caché integrado y más.
Bueno para proyectos pequeños y grandes, Django se puede escalar bien para cargas razonables y ha sido utilizado por muchos sitios de alto tráfico, incluidos Instagram, Mozilla y The Washington Post. Django tiene características asíncronas en la versión 3.0, con vistas asíncronas y middleware próximamente en la versión 3.1.
Mientras que tradicionalmente se centra en aplicaciones web de pila completa, Django también es adecuado para desarrollar aplicaciones de backend solo para API. Existen integraciones maduras para crear rápidamente API REST y GraphQL con Django.
línea de Fondo: El estándar de facto por una buena razón, Django es el framework de pila completa dominante para Python. Excelente para comenzar rápidamente y con un historial probado de escalado, Django es ideal para muchos proyectos. Si prefiere personalizar más de lo que permite Django, considere Pyramid y los micro marcos. Si necesita una concurrencia muy alta, explore los marcos asíncronos.
Pirámide
Pyramid es otro framework popular de pila completa. Con raíces en el proyecto Pilones, ha estado en desarrollo desde Django y también es una opción muy madura.
En contraste con Django, Pyramid es menos obstinado. Proporciona herramientas de enrutamiento, renderizadores y línea de comandos para arrancar un proyecto, pero le ofrece la posibilidad de elegir su propia capa de base de datos, sistema de plantillas y más a través de un amplio conjunto de complementos.
Con su flexibilidad fundamental, Pyramid es un buen punto medio si está tratando de decidir entre un marco de pila completa o un microframe. Pyramid le permite comenzar más pequeño que Django y aumentar la complejidad de su base de código según sea necesario. Esta flexibilidad en el soporte de bibliotecas puede ser importante cuando tiene requisitos especializados o está interactuando en gran medida con sistemas que Django puede no integrar bien (las bases de datos heredadas son un ejemplo común).
Pyramid tiene una base de fans dedicada y una comunidad activa que aprecia su naturaleza de crecimiento a medida que avanza y su flexibilidad fundamental. Si elige Pyramid, espere trabajo adicional para elegir los componentes por adelantado. Sin embargo, este puede ser un tiempo bien empleado a largo plazo si le permite acelerar permanentemente los aspectos de desarrollo que son críticos para usted.
Conclusión: Una poderosa mezcla de flexibilidad y control hace de Pyramid una alternativa convincente a Django para algunos proyectos.
Web2Py
web2py es un framework de pila completa que se centra en la facilidad de desarrollo, con su propio IDE basado en web, depurador y controles de implementación. Se inspiró en Ruby on Rails y Django y sigue un diseño MVC (Model View Controller).
El proyecto comenzó como una herramienta de enseñanza y tiene un énfasis en la funcionalidad común con valores predeterminados sensibles. Tiene una curva de aprendizaje mucho más fácil que la mayoría de los frameworks y es extremadamente fácil de instalar y comenzar. La documentación es excelente y muchas funciones vienen incorporadas, incluido un programador, ayudantes 2FA y un buen sistema de tickets que se rellena automáticamente con defectos en la producción.
web2py tiene una comunidad más pequeña que Django y algunos otros frameworks, pero muy amigable. Hay muchos tutoriales y recursos disponibles.
línea de Fondo: Más adecuado para programadores nuevos o desarrolladores que experimentan con el desarrollo web. No es una gran opción para nuevos proyectos comerciales a gran escala.
TurboGears
Promocionado como el» framework que se escala con usted», TurboGears le permite iniciar su aplicación tan simple como un solo archivo (como un microframe) o escalar hasta una aplicación de pila completa con herramientas de línea de comandos para admitir la administración. En este sentido, es similar a Pyramid, con el beneficio de un mayor control/personalización a expensas de requerir más trabajo por adelantado para determinar cómo desea estructurar su aplicación y qué bibliotecas desea integrar.
El OR predeterminado para TurboGears es el excelente SQLAlchemy. TurboGears tiene diferencias interesantes en cómo maneja el enrutamiento y su solución de plantillas predeterminada. A diferencia de la mayoría de los frameworks de pila completa, el enrutamiento se maneja a través de una jerarquía de objetos en lugar de asignar expresiones regulares a controladores (la asignación está disponible como una opción alternativa). El sistema de plantillas predeterminado para TurboGears es Kajiki, un lenguaje inspirado en XSLT.
Conclusión: TurboGears se escala bien con mucho control, desde proyectos pequeños hasta proyectos más grandes. Sin embargo, Pyramid ofrece un rango similar de flexibilidad y es probablemente una mejor opción para la mayoría de las personas.
Masonite
Masonite es un framework relativamente nuevo (2017) que tiene una filosofía de diseño similar a la de Django, pero tiene como objetivo mejorar algunos puntos débiles comunes. Ofrece andamiaje de código mejorado, middleware de enrutamiento y soporte incorporado para envío de correo electrónico, carga S3 y colas.
La arquitectura de Masonite es altamente extensible y sus capacidades integradas son impresionantes. La documentación es buena y hay un canal de soporte activo de Slack. Utiliza su propio Or, Orador, basado en ActiveRecord.
Como un nuevo framework, la comunidad de Masonite es pequeña pero en crecimiento. Se mejora activamente y tiene mucho que gustar. Dado su mindshare más pequeño, es más difícil encontrar desarrolladores familiarizados con Masonite, pero si las capacidades adicionales listas para usar son adecuadas para sus necesidades, puede acelerar su desarrollo.
En resumen: Masonite, un contendiente más nuevo, hace que tareas comunes como la administración de correo electrónico, la carga de archivos en la nube y el procesamiento de pagos sean fáciles de usar.
Microestructuras para Python
Matraz
Flask es una solución increíblemente popular para aplicaciones web y microservicios. Originalmente inspirado en el framework Ruby Sinatra, Flask se centra en proporcionar un conjunto básico de funcionalidades (manejo de solicitudes, enrutamiento, cumplimiento de WSGI, plantillas) y ofrece un diseño modular para agregar cualquier otra cosa que necesite.
Como resultado, iniciar una aplicación es increíblemente simple. Puede crear una aplicación web que funcione en pocas líneas:
from flask import Flask, escape, requestapp = Flask(__name__)@app.route('/')def hello(): name = request.args.get("name", "World") return f'Hello, {escape(name)}!'
Flask tiene una amplia gama de extensiones disponibles, lo que le permite integrar sus propias opciones de almacenamiento, interacción con bases de datos, autenticación y autorización, seguridad y más. Llevará tiempo integrar y configurar sus opciones, pero las aplicaciones se pueden crear de forma incremental y no incluirán bibliotecas ni código para cosas que su aplicación no use.
Las aplicaciones Flask suelen comenzar en un solo archivo, pero pueden escalarse para ser muy grandes. Hay patrones comunes para organizar las aplicaciones de flask y flask también ofrece planos como una forma de hacer que las aplicaciones más grandes sean más modulares y manejables.
Conclusión: Extremadamente flexible, Flask es ideal para aplicaciones web, API y microservicios orientados al usuario por igual. El matraz es el micro-marco más popular para Python.
Bottle
Bottle tiene una sintaxis similar a Flask (en realidad es anterior a ella un año), pero se distribuye como un solo archivo sin dependencias fuera de la biblioteca estándar de python. Esto hace que sea fácil de ejecutar en cualquier entorno, incluidos los lugares donde la instalación de bibliotecas es difícil. También significa que la gestión de dependencias puede ser trivial, lo que puede ser genial para proyectos más pequeños.
from bottle import route, run, template@route('/hello/<name>')def index(name): return template('<b>Hello {{name}}</b>!', name=name)run(host='localhost', port=8080)
El conjunto de características es bastante similar a Flask, pero la comunidad activa es mucho más pequeña. Los complementos disponibles también son más limitados. Además, hay menos tutoriales y puede ser más difícil encontrar ejemplos de código u obtener ayuda.
Bottle está orientado principalmente a aplicaciones con bases de código muy pequeñas y no tiene una ruta clara para escalar la organización del código a medida que las cosas se vuelven complejas. La simplicidad es el enfoque. Tener menos dependencias puede simplificar mucho la implementación (simplemente pegue bottle.py en su directorio de proyectos) y pasar de un prototipo a una aplicación de producción más rápidamente.
línea de Fondo: Ideal para proyectos personales, aplicaciones pequeñas o escenarios de implementación en los que es difícil administrar dependencias complejas.
H3: CherryPy
CherryPy es otro micro-marco maduro (desde 2002) con sus propios fans. Una diferencia importante con el frasco y la botella es que el cerfripio está orientado a objetos y se enfoca en ser lo más «pitónico» posible. Dicho de otra manera, CherryPy tiene como objetivo hacer que la escritura de una aplicación web sea lo más similar posible a la escritura de código python general. Veamos un ejemplo:
import cherrypyclass HelloWorld(object): @cherrypy.expose def index(self): return "Hello World!"cherrypy.quickstart(HelloWorld())
Puede ver que la aplicación está definida como una clase, a diferencia del enfoque basado en funciones de Flask. También el enrutamiento en sí está basado en objetos; el decorador` @cherrypy ‘ marca qué métodos de objetos deben convertirse en rutas, donde en Flask los decoradores definen las rutas por sí mismos. Algunos desarrolladores prefieren esta forma de enrutamiento implícito, mientras que otros la encuentran desafiante.
Una de las fortalezas de CherryPy es su servidor web, que está incluido en el marco. Es rápido, listo para producción, HTTP/1.compatible con 1, agrupado en hilos y se puede usar con cualquier aplicación WSGI de Python. De hecho, algunos desarrolladores usan el servidor web de CherryPy para ejecutar otras aplicaciones WSGI (no CherryPy) porque es muy fácil de configurar y usar.
CherryPy también incluye una gran cantidad de funciones integradas, que incluyen administración de sesiones, autenticación, manejadores de contenido estático, almacenamiento en caché, creación de perfiles y más. Hay complementos disponibles que acceden a un rico conjunto de puntos de extensión.
La comunidad de CherryPy es mucho más pequeña que la de Flask, lo que significa una comunidad más pequeña de complementos, menos tutoriales, etc.
línea de Fondo: Vale la pena echar un vistazo si prefiere un estilo de desarrollo orientado a objetos.
Falcon
Falcon es un marco de trabajo centrado en el rendimiento para crear API REST y microservicios. Dado su enfoque en la velocidad, Falcon proporciona un conjunto de características limitadas: enrutamiento, middleware, ganchos, manejo de errores/excepciones fuertes y ayudantes WSGI para facilitar las pruebas unitarias.
Falcon elimina cualquier interés en las aplicaciones orientadas al usuario y se centra en servir JSON a través de terminales REST. Observe el verbo REST (GET) en este ejemplo de código:
import falconclass QuoteResource: def on_get(self, req, resp): """Handles GET requests""" quote = { 'quote': ( "I've always been more interested in " "the future than in the past." ), 'author': 'Grace Hopper' } resp.media = quoteapi = falcon.API()api.add_route('/quote', QuoteResource())
Dada su afinación y enfoque singular, Falcon es radicalmente más rápido (20-75x!) que Django y Flask en puntos de referencia de peticiones muy básicas. Otros aspectos fuertes de Falcon son las respuestas de error HTTP idiomáticas (un punto de dolor común al construir API) y el manejo sencillo de excepciones. Se ejecuta en PyPy y es compatible con Cython en CPython, dos opciones a considerar para obtener el máximo rendimiento.
Si te gusta la idea de Falcon pero quieres una solución con más funciones, echa un vistazo a Hug, un marco construido sobre Falcon que agrega administración de versiones, documentación automática y validación automática basada en tipos.
Conclusión: Si desea crear API REST/JSON de alto rendimiento, Falcon puede ser para usted.
Marcos asíncronos para python
Sanic
Sanic es un servidor y marco web asíncrono relativamente nuevo (primera versión en 2016),»escrito para ir rápido».
Mientras que la mayoría de los trabajos de pila completa y micro marcos en esta lista han existido durante una década o más, la adición de asyncio en Python 3.5+ ha abierto las puertas a una nueva generación de frameworks asincrónicos de alto rendimiento. Sanic es una de las opciones más establecidas en esta nueva generación.
La sintaxis de Sanic es bastante similar a Flask, con la adición de soporte asincrónico de extremo a extremo:
from sanic import Sanicfrom sanic.response import jsonapp = Sanic()@app.route("/")async def test(request): return json({"hello": "world"})if __name__ == "__main__": app.run(host="0.0.0.0", port=8000)
Cuenta con sólidas capacidades de enrutamiento, middleware, streaming, soporte para WebSocket, administración de cookies, control de versiones de rutas, servicio de archivos estáticos y más. Sanic es un ajuste natural si necesita manejar conexiones de larga duración como WebSockets o necesita un alto nivel de concurrencia de su API.
Con un marco de trabajo asíncrono, tendrá que centrarse en la programación asíncrona en Python, con sus advertencias relacionadas, complejidad y desafíos de depuración. Vale la pena tomarse el tiempo para evaluar si realmente necesita el rendimiento de una API totalmente asincrónica, pero si lo hace, ¡vale la pena echar un vistazo a Sanic!
línea de Fondo: Una opción madura y establecida para desarrollar API asíncronas de alto rendimiento
FastAPI
FastAPI es más nuevo que Sanic (primer lanzamiento a principios de 2019), pero está ganando impulso rápidamente. Sobresale en la creación de API REST o GraphQL, y puede manejar solicitudes síncronas, solicitudes asíncronas, streaming y websockets.
También tiene soporte integrado para autenticación y autorización, validación de datos, serialización JSON y cuenta con documentación automática de API siguiendo el estándar OpenAPI.
from fastapi import FastAPIapp = FastAPI()@app.get("/")def read_root(): return {"Hello": "World"}@app.get("/items/{item_id}")def read_item(item_id: int, q: str = None): return {"item_id": item_id, "q": q}
El conjunto de características de FastAPI es realmente impresionante y llega a un punto óptimo con su combinación de flexibilidad y facilidad de desarrollo. Está muy cuidadosamente diseñado y aprovecha la sugerencia de tipos y la inyección de dependencias en general para reducir los errores en el desarrollo. Además, la documentación y el soporte para editores de FastAPI son excelentes.
La sintaxis de FastAPI es bastante similar a Flask, lo que la convierte en una buena opción si está buscando migrar las bases de código existentes de Flask a una solución completamente asincrónica.
línea de Fondo: FastAPI, un framework en auge, vale la pena explorar para su próximo proyecto asincrónico.
Starlette
Starlette es un framework y kit de herramientas ASGI ligero, que proporciona primitivas e integración modular para permitirle construir su aplicación con cualquier grado de control que desee.
ASGI es un sucesor de WSGI, que proporciona una interfaz estándar entre servidores web, marcos y aplicaciones compatibles con asíncrono. Tenga en cuenta que ASGI admite operaciones síncronas y asíncronas y que ASGI incluye una implementación de compatibilidad con versiones anteriores de WSGI.
Como marco, Starlette une sus diversas funciones para usted, incluyendo soporte WebSocket, soporte GraphQL, tareas en segundo plano en proceso, soporte de sesión y cookies, CORS, GZip, archivos estáticos y más. También puede usar cada pieza de forma independiente, recogiendo y eligiendo piezas específicas del kit de herramientas.
Dado que Starlette es primero un kit de herramientas, el uso como marco puede sentirse más compositivo, con preocupaciones expuestas por separado:
from starlette.applications import Starlettefrom starlette.responses import JSONResponsefrom starlette.routing import Routeasync def homepage(request): return JSONResponse({'hello': 'world'})app = Starlette(debug=True, routes=)
FastAPI en realidad está construido sobre Starlette, agregando comodidad de sintaxis y características adicionales. Para la mayoría de los equipos, FastAPI es probablemente un mejor lugar para comenzar, pero Starlette ofrece el máximo control y un poderoso conjunto de primitivas.
Conclusión: Si quieres trabajar cerca del metal en tus propias herramientas asíncronas, Starlette es un lugar increíble para comenzar.
Tornado
Tornado es un framework web asíncrono más antiguo, creado mucho antes de que las capacidades de asíncio se incorporaran a Python. Creado originalmente por FriendFeed y lanzado por primera vez en 2009, Tornado es una solución probada para escalar a decenas de miles de conexiones abiertas en Python.
El núcleo de Tornado es un modelo de aplicación altamente personalizable con sólidas bibliotecas de red subyacentes. Incluye enrutamiento, plantillas, administración de sesiones y cookies, soporte nativo de WebSocket, funciones de seguridad y tiene una amplia gama de opciones para diferentes almacenes de datos. Es menos completo que algo como Django, pero tiene muchas más características incorporadas que un micro marco típico. Tornado utiliza métodos de estilo verbal a petición de clases de manejador, por lo que se presta a un estilo de desarrollo más orientado a objetos:
import tornado.ioloopimport tornado.webclass MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, world")def make_app(): return tornado.web.Application()if __name__ == "__main__": app = make_app() app.listen(8888) tornado.ioloop.IOLoop.current().start()
Tornado continúa siendo mejorado y mantenido activamente, con una comunidad robusta. Es utilizado por Facebook, Quora y otros en su arquitectura de producción.
Tornado 6 + usa asyncio bajo el capó y requiere Python 3.5+, pero Tornado 5 se puede usar con Python 2.7 y versiones posteriores. Ejecutándose en Python 3.5+, las corrutinas asíncronas Tornado usan la sintaxis nativa ‘async’ / ‘await’. Para versiones anteriores, Tornado ofrece una sintaxis de generador que tiene capacidades similares. En particular, Tornado tiene un puente maduro para Twisted, que le permite ejecutar aplicaciones y bibliotecas Twisted en la parte superior de Tornado.
Conclusión: Una solución probada para escalar a un número masivo de solicitudes simultáneas, vale la pena explorar Tornado si desea una opción establecida con una comunidad fuerte, está vinculado a bases de código antiguas o tiene que usar versiones anteriores de Python.
¿Qué framework web de Python es el mejor para ti?
Como debe quedar claro en esta lista, hay muchas buenas opciones. De hecho, hay muchos otros frameworks disponibles para Python-hemos limitado intencionalmente este artículo a solo los frameworks que creemos que más vale la pena considerar en 2020.
Un buen punto de partida es el criterio que mencionamos al principio de este artículo. ¿Cuáles son tus objetivos? ¿Está buscando experimentar con algo nuevo, construir algo rápidamente con tecnología probada o aprender nuevas habilidades? ¿Cuántas personas trabajarán en tu base de código y cuánto tiempo durará? Todas estas son pistas útiles en cuanto a la elección correcta.
No hay un marco que sea perfecto para todos, pero aquí hay algunas sugerencias generales:
- Si está buscando comenzar rápidamente con una solución bien establecida donde los recursos sean fáciles de encontrar, use Django o Flask
- Si le gusta comenzar a pequeña escala y comprender (o controlar) todas las piezas de su aplicación, explore Pyramid, Flask o CherryPy
- Si está creando una API o microservicio que tendrá que ser de alto rendimiento, busque Falcon, FastAPI o Sanic.
- Si eres un programador principiante o simplemente estás aprendiendo a hacer desarrollo web, web2py o Bottle son formas fáciles y amigables de comenzar
- Si estás buscando explorar nuevos marcos de trabajo con nuevas ideas y formas de hacer las cosas, echa un vistazo a Masonite y FastAPI
¿Te ha parecido útil este artículo o has visto algo con lo que no estás de acuerdo o crees que debería mejorarse? Por favor, háganoslo saber, valoramos sus comentarios!