Los frameworks facilitan la vida de los desarrolladores ofreciéndoles una estructura para el desarrollo de aplicaciones. Automatizan la implementación de soluciones comunes, reduciendo el tiempo de desarrollo y permitiendo a los desarrolladores centrarse en la lógica de la aplicación en lugar de en los elementos rutinarios.
En este artículo, compartimos una lista de los doce mejores frameworks web de Python que te serán útiles en tu camino para convertirte en un desarrollador backend profesional y mejorar tu conjunto de habilidades existentes.
¿Por qué frameworks de Python? Stack Overflow ha publicado recientemente los resultados de su encuesta anual de desarrolladores para 2019, que declaró a Python como el lenguaje de programación principal de más rápido crecimiento.
De lejos, los frameworks de Python más populares son Django y Flask. Pero eso no significa que debas descartar el potencial de otros frameworks. Cada uno de ellos posee características que podrían encajar perfectamente en tu proyecto web.
Tenga en cuenta que los frameworks de Python de los que vamos a hablar aquí no están listados en ningún orden en particular: nos hemos centrado en mostrar lo que es capaz de hacer en lugar de decirle lo que debe hacer.
Algunas cosas a tener en cuenta
Por un lado, a la hora de decidir qué framework utilizar, fíjese en el tamaño y la complejidad de su proyecto. Si lo que quieres desarrollar es un gran sistema repleto de características y requisitos, un framework full-stack podría ser la elección correcta. Si tu aplicación es más pequeña y sencilla, probablemente deberías considerar un microframework.
En segundo lugar, tienes que comprobar si el framework que estás considerando puede escalar vertical y horizontalmente. Esto es imprescindible para proyectos que vayan a ejecutarse en varios servidores, manejen grandes cantidades de tráfico y admitan la adición de nuevas características para mejorar la funcionalidad.
Una vez que hayas elegido un framework, ponte en contacto con un equipo de desarrolladores y pídeles información sobre el coste estimado para desarrollar tu aplicación.
Puedes encontrar información sobre el tipo y el enfoque de algunos frameworks aquí. La decisión final, sin embargo, debe venir de tu propia comprensión de tu proyecto y de las tareas que quieres simplificar.
Sin embargo, los frameworks también pueden obstaculizar el desarrollo. Cuando se elige un marco de trabajo de pila completa, a menudo se está firmando para un conjunto de limitaciones. Por supuesto, usted puede encontrar maneras de trabajar alrededor de ellos, pero tenga cuidado de no gastar más tiempo luchando por su propia libertad de lo que tendría la escritura de una aplicación en Python puro.
Frameworks de pila completa
Un marco de pila completa o un marco de la empresa es una solución todo-en-uno con las bibliotecas configuradas para trabajar juntos sin problemas. Soporta el desarrollo de servicios backend, interfaces frontend y bases de datos. Un framework full-stack proporciona todo lo que un desarrollador necesita para construir una aplicación. Python ofrece más de un framework full-stack.
Django
Sitio web oficial | GitHub | PyPI | Awesome
GitHub Stars: 44,077 | GitHub Forks: 18,949
Django es un framework de Python de código abierto y completo. Trata de incluir todas las características necesarias por defecto en lugar de ofrecerlas como bibliotecas separadas.
Algunas de las características ejemplares de Django son su autenticación, enrutamiento de URL, motor de plantillas, mapeador objeto-relacional (ORM) y migraciones de esquemas de bases de datos (Django v.1.7+).
Estas características hacen que Django sea altamente escalable, ridículamente rápido y extremadamente versátil.
Django utiliza su ORM para mapear objetos a tablas de bases de datos. El mismo código funciona con diferentes bases de datos y no es difícil de transferir de una base de datos a otra. Las principales bases de datos con las que trabaja Django son PostgreSQL, MySQL, SQLite y Oracle, pero los controladores de terceros también permiten utilizar otras.
Con Django, puedes crear cualquier aplicación web, desde proyectos a pequeña escala hasta sitios web complejos. Gracias a su flexibilidad, Django también se utiliza para elaborar MVPs, lo que permite a las startups optimizar su tiempo y presupuesto.
Se espera que la base de usuarios de Django crezca, ya que muchos desarrolladores ven este framework como la mejor opción para tecnologías emergentes como el aprendizaje automático. Además, en 2020, la comunidad de Django tiene previsto lanzar más bibliotecas para satisfacer la creciente demanda.
Aquí en SteelKiwi, utilizamos Django como nuestro principal marco para el desarrollo de backend. Si quieres ver las increíbles aplicaciones que ya hemos desarrollado con Django, visita nuestra página de Proyectos.
Pirámide
Sitio web oficial | GitHub | PyPI | Awesome
Estrellas de GitHub: 3.215 | Forks de GitHub: 866
Pyramid es un framework de aplicaciones web basado en Python de código abierto -y el segundo más destacado-. Su objetivo es hacer todo lo posible con la mínima complejidad. Corriendo en Python 3, Pyramid se mantiene al día con las mejoras tecnológicas. Pyramid 1.10 es la versión actual del framework y es la décima actualización desde 2010.
La característica más llamativa de Pyramid es su capacidad para trabajar bien con aplicaciones tanto pequeñas como grandes. Algunas de las grandes características de Pyramid incluyen:
- Aplicaciones de un solo archivo
- Generación de URL
- Configuración extensible
- Todas las especificaciones de plantillas y activos
- Autenticación y autorización flexibles
- Pruebas, soporte, y documentación de datos completa
- Predicados de vista y muchas vistas por ruta
- Decoradores de funciones
- Predicados
- Renderizadores
Con Pyramid, un desarrollador puede decidir el lenguaje de plantillas, las bibliotecas de generación y la capa de base de datos.
La comunidad de Pyramid es activa y cuenta con muchas versiones. Los desarrolladores pueden seguir el progreso del framework uniéndose al canal oficial de IRC o a los grupos de Google y Twitter.
TurboGears
Sitio web oficial | GitHub | PyPI
GitHub Stars: 654 | GitHub Forks: 65
TurboGears es un framework de aplicaciones web full-stack de código abierto y orientado a datos. Está construido sobre un montón de middleware y muchas bibliotecas y fue inicialmente elaborado para combinar los mejores componentes de otros frameworks de Python.
TurboGears le permite desarrollar rápidamente aplicaciones web extensibles basadas en datos. Viene con un motor de plantillas fácil de usar y un ORM potente y flexible. Además de grandes sistemas de plantillas que facilitan la vida de los diseñadores, TurboGears ofrece mucha flexibilidad, un fuerte soporte de agregados, un potente ORM y fragmentos reutilizables.
Algunas de las características distintivas de TurboGears incluyen:
- Soporte para múltiples bases de datos
- Arquitectura de estilo MVC
- Soporte para SQLObject y SQLAlchemy
- Kid y Genshi incluidos en los lenguajes de plantillas preferidos
- Validación con FormEncode
- Pylons como servidor web
- ToscaWidgets, una biblioteca de aplicaciones que simplifica la coordinación del diseño del frontend y el desarrollo del servidor
- Plantillas PasteScript
- Servidores basados en WSGI para el frontend (servidor HTTP Paste, servidor WSGI/HTTP CherryPy, etc.)
- Herramientas de línea de comandos
- Integración de la biblioteca JavaScript MochiKit
- Todas las características implementadas como decoradores de funciones
En cuanto al futuro de TurboGears, la comunidad está trabajando actualmente en la mejora de las capacidades del marco y la estabilidad general y están a punto de liberar el «código mínimo». Este código también se conoce como microframework, o una versión reducida de TurboGears. El código mínimo ayudará a los desarrolladores a construir aplicaciones más rápido, ahorrando dinero y tiempo.
Web2py
Sitio web oficial | GitHub | PyPI
Estrellas de GitHub: 1.794 | Forks de GitHub: 818
Web2py es un framework de Python de código abierto escalable y completo. Es muy potente a la hora de manejar datos. Web2py se ofreció originalmente como una herramienta de enseñanza con un enfoque en la facilidad de uso. Esto explica por qué no hay archivos de configuración a nivel de proyecto.
Lo bueno de Web2py, sin embargo, es que viene con su propio IDE basado en la web que, entre otras cosas, incluye un editor de código, depurador y despliegue con un solo clic.
Otras valiosas características de Web2py incluyen:
- Sin requisitos de instalación y configuración
- Capacidad para ejecutarse en Windows, Mac, Linux/Unix, Google App Engine, Amazon EC2, y cualquier alojamiento web que soporte Python 2.5-2.7 o Java+Python
- Lectura de múltiples protocolos
- Seguridad de los datos que evita vulnerabilidades como cross-site scripting, fallos de inyección y ejecución de archivos maliciosos
- Empleo exitoso de prácticas de ingeniería de software, haciendo que el código sea fácil de leer y mantener
- Seguimiento de errores, registro minucioso de errores y emisión de tickets
- Control de acceso basado en roles
- Soporte para la internacionalización
- Compatibilidad con versiones anteriores que asegura el avance orientado al usuario sin necesidad de perder los lazos con versiones anteriores
Un sistema de tickets es la principal característica de Web2py; emite tickets cada vez que se producen errores. De esta forma, los usuarios pueden hacer un seguimiento de los errores y sus estados.
A pesar de todas estas ventajas, la comunidad de Web2py es más pequeña que la de Pyramid o Django. No son muchos los desarrolladores que lo utilizan. Esto significa que las posibilidades de recibir soporte son menores. Además, la lista de correo oficial no es muy activa.
Microframeworks
Un microframework, o un framework de aplicación web minimalista, carece de la mayoría de las funcionalidades de un framework completo, como un motor de plantillas web, funcionalidad de autenticación, cuentas, autorización, validación de entradas y saneamiento de entradas. Un microframework intenta proporcionar sólo el conjunto de componentes necesarios para construir una aplicación. También puede centrarse en proporcionar la funcionalidad necesaria para un ámbito concreto.
Flask
Sitio web oficial | GitHub | PyPI | Awesome
Github Stars: 46,475 | GitHub Forks: 12,921
Flask es un framework de Python disponible bajo la licencia BSD. Está inspirado en el framework Sinatra de Ruby. Flask depende del kit de herramientas Werkzeug WSGI y de la plantilla Jinja2.
La idea principal detrás de Flask es ayudar a construir una base sólida de aplicación web. A partir de ahí, puede utilizar cualquier extensión que pueda necesitar. Flask es elegido para todos y cada uno de los proyectos. De hecho, es una opción por defecto para cualquier proyecto web que no sea compatible con Django.
El diseño ligero y modular de Flask lo hace fácilmente adaptable a las necesidades de los desarrolladores. Incluye una serie de características útiles out-of-the-box:
- Servidor de desarrollo incorporado y un depurador rápido
- Soporte integrado para pruebas unitarias
- Despacho de peticiones RESTful
- Plantillas Jinja2
- Soporte de cookies seguras (sesiones del lado del cliente)
- WSGI 1.0
- Basado en Unicode
- Capacidad de conectar cualquier ORM
- Manejo de peticiones HTTP
Desde su lanzamiento en 2010, Flask se ha actualizado 27 veces. Hasta la fecha, sigue siendo el framework de Python de mayor crecimiento. Sin embargo, muchas extensiones de Flask ya no tienen soporte: la documentación está obsoleta y ya no se desarrollan. Si te encuentras con esto, tendrás que buscar en Google para encontrar un complemento con soporte activo y funcionalidad similar.
Bottle
Sitio web oficial | GitHub | PyPI
GitHub Stars: 6,348 | GitHub Forks: 1,245
Bottle es un microframework. Originalmente pensado para construir APIs, Bottle implementa todo en un único archivo fuente. No tiene dependencias aparte de la biblioteca estándar de Python. Codificar con Bottle te acerca más al metal que codificar con cualquier framework full-stack. Sin embargo, Bottle es un partido sólo si usted está elaborando una aplicación muy pequeña con un máximo de 500 líneas de código y sin requisitos especiales.
Sus características por defecto incluyen enrutamiento, plantillas, utilidades, y una abstracción básica sobre el estándar WSGI.
- Enrutamiento – soporta el mapeo de peticiones a llamadas de función, permitiéndole lograr URLs limpias y dinámicas
- Plantillas – un motor de plantillas rápido y Pythonic fuera de la caja junto con el soporte completo para mako, jinja2, y cheetah
- Utilidades – acceso cómodo a datos de formularios, cargas de archivos, cookies, cabeceras, y otros metadatos relacionados con HTTP
- Servidor – un servidor de desarrollo HTTP incorporado que soporta fapws3, bjoern, GAE, СherryPy, y cualquier otro servidor HTTP compatible con WSGI
Desde 2009, Bottle se ha actualizado 73 veces, y ahora es una solución perfecta para la creación de prototipos, el aprendizaje de la organización de los frameworks web, y la construcción de aplicaciones personales simples.
Cualquier contribución a la comunidad de Bottle se acepta a través de GitHub. Los usuarios también pueden unirse a la lista de correo y al blog de Bottle y seguir los últimos cambios en Twitter. Si buscas un foro de discusión adicional, únete a un chat de Freenode.
CherryPy
Sitio web oficial | GitHub | PyPI
Estrellas de GitHub: 1,057 | Forks de GitHub: 259
CherryPy es un framework web minimalista de código abierto. Hace que la construcción de aplicaciones web en Python no sea diferente a la construcción de cualquier otro programa orientado a objetos.
CherryPy está creado para ser extensible. Por ejemplo, una aplicación web impulsada por CherryPy es una aplicación Python independiente que incorpora su propio servidor web multihilo. Con su propio servidor web, los puntos de extensión incluyen funciones fuera del ciclo solicitud-respuesta, añadiendo así el nivel de extensibilidad de CherryPy.
De hecho, una aplicación web impulsada por CherryPy es una aplicación Python independiente que incorpora su propio servidor web multihilo. Las aplicaciones CherryPy corren en cualquier sistema operativo que soporte Python (Windows, macOS, Linux, etc.). Pueden ser desplegadas en cualquier lugar donde se pueda correr una aplicación Python ordinaria. No necesitas Apache para las aplicaciones CherryPy, pero puedes correr una aplicación CherryPy detrás de Apache tan bien como puedes correrla detrás de Lighttpd o IIS.
CherryPy no es un framework muy limitante, ya que te permite usar cualquier tipo de tecnología para plantillas, acceso a datos y demás. Sin embargo, es capaz de manejar sesiones, estática, cookies, carga de archivos y todo lo que un framework web típicamente puede.
Algunas de las características por defecto de CherryPy incluyen:
- Un HTTP/1.1-compatible con WSGI thread-pooled webserver
- Simplicidad de ejecutar múltiples servidores HTTP a la vez
- Un poderoso sistema de configuración
- Un sistema flexible de plugins
- Herramientas out-of-the-box para caché, codificación, sesiones, autenticación, contenido estático, etc.
- Soporte incorporado para perfilado, cobertura y pruebas
- Capacidad de correr en Python 2.7+, Python 3.1+, PyPy, Jython, y Android
A pesar de todas sus características y ventajas, muchos desarrolladores sienten que la documentación de CherryPy podría mejorar. Además, CherryPy podría ser por lo menos un poco más fácil de usar.
Como la mayoría de los otros frameworks, CherryPy tiene una comunidad detrás que provee asistencia a principiantes y desarrolladores avanzados. CherryPy tiene una lista de correo y sugiere a los desarrolladores unirse al canal IRC del framework o a los grupos de Gitter y Google.
Falcon
Sitio web oficial | GitHub | PyPI
Estrellas de GitHub: 1,057 | Forks de GitHub: 259
Falcon es un marco de API web Python bare-metal para construir backends de aplicaciones muy rápidos. El logo del framework es un halcón, que simboliza la rapidez con la que Falcon trabaja.
Este framework permite a los desarrolladores elaborar diseños más limpios y maneja la mayoría de las peticiones. Falcon nunca restringe a los desarrolladores en la elección de las bibliotecas para las bases de datos y la autorización.
Otras valiosas características de Falcon:
- 100% de cobertura de código con un completo conjunto de pruebas
- Una base de código altamente optimizada
- Manejo de excepciones por adelantado
- REST-inspiradas en REST
- Plantillas URI para rutinas intuitivas
- Fácil acceso a través de clases de petición y respuesta
- Procesamiento de peticiones en seco a través de componentes middleware
- Respuestas de error HTTP automáticas
- Pruebas de unidad a través de ayudantes WSGI
Falcon ignora las operaciones inútiles durante el desarrollo de un framework web. Además, da libertad de elección: los desarrolladores pueden tomar decisiones que les ayudarán a afinar y personalizar las implementaciones libremente.
Dos ventajas más que vale la pena mencionar son la disponibilidad de una extensa documentación y una comunidad activa.
Hug
Sitio web oficial | GitHub | PyPI
Estrellas de GitHub: 5.905 | Forks de GitHub: 347
Hug es un marco de desarrollo de la API de Python 3. Está diseñado para permitir a los ingenieros de software desarrollar una API una vez y luego reutilizarla cuando sea necesario. El framework Hug simplifica el desarrollo de APIs ofreciendo varias interfaces. Esa es la razón principal por la que este framework es llamado uno de los más rápidos de Python 3.
Características principales de Hug:
- Soporte para documentación automática
- Validación potenciada por anotaciones
- Gestión de versiones incorporada
- Cumplimiento de Cython
- Puede utilizarse como una biblioteca de Python
El framework Hug contiene el menor número de integraciones y el menor código posible, permaneciendo funcional y proporcionando un gran rendimiento. Además, la comunidad de Hug está creciendo actualmente. Eso es una señal de la demanda del framework y una prueba de que siempre que ocurre un problema, un desarrollador puede encontrar ayuda.
FastAPI
Sitio web oficial |GitHub |PyPI
Estrellas de GitHub: 4.835| Forks de GitHub: 256
FastAPI es un framework moderno basado en Python. Fue diseñado inicialmente para ser fácil de usar para garantizar la mejor experiencia de desarrollo. Hasta la fecha, FastAPI es uno de los frameworks más rápidos para construir APIs con Python 3.6+.
El framework tomó varias características de Flask, incluyendo su simplicidad. Todo el framework está construido sobre Starlette e incluye la mayoría de sus características (plantillas, WebSockets y soporte de GraphQL).
El framework FastAPI ofrece:
- Aumento de la velocidad de desarrollo entre un 200% y un 300%
- Reducción de errores en un 40%
- Menos tiempo de depuración
- Minimización de la duplicación de código
- Documentación interactiva automática
FastAPI no está estrechamente acoplado a ninguna base de datos. Sin embargo, es compatible con las bases de datos que necesite. Con FastAPI, eres libre de estructurar tu proyecto de la manera que necesites e incluso utilizar la mayoría de los mismos archivos de uno de tus proyectos Flask.
El único inconveniente es su pequeña comunidad. Pero es porque FastAPI es un framework relativamente nuevo.
Framework asíncrono
Un framework asíncrono es un tipo de framework de Python relativamente reciente. Es un microframework que permite a los desarrolladores manejar un gran conjunto de conexiones concurrentes. Los frameworks asíncronos utilizan sockets no bloqueantes y se alimentan de la librería asyncio de Python.
Sanic
Sitio web oficial | GitHub | PyPI
GitHub Stars: 12,780 | GitHub Forks: 1,203
Sanic es un framework web de Python construido sobre uvloop y creado específicamente para respuestas HTTP rápidas a través del manejo de peticiones asíncronas.
Se ejecuta en Python 3.5+. Sanic soporta manejadores de peticiones asíncronas, lo que lo hace compatible con las funciones async/await de Python 3.5. Esto mejora su velocidad, ofreciendo capacidades de no-bloqueo.
Sonic es considerado el framework asíncrono preferido en el mundo de Python debido a su enrutamiento, middleware, cookies, versionado, archivos estáticos, blueprints, vistas basadas en clases y sockets. Sin embargo, no ofrece soporte de bases de datos ni plantillas.
En una prueba de referencia con un proceso y 100 conexiones, Sanic fue capaz de manejar 33.342 peticiones por segundo, con una latencia media de 2,96 ms.
Tornado
Sitio web oficial | GitHub | PyPI
GitHub Stars: 18.292 | GitHub Forks: 5,040
Tornado es un framework web de Python y una biblioteca de red asíncrona que se centra en la velocidad y la capacidad de manejar grandes volúmenes de tráfico. Utiliza una E/S de red no bloqueante y resuelve el problema de C10k (lo que significa que, si se configura correctamente, puede manejar más de 10.000 conexiones concurrentes).
Esto lo convierte en una gran herramienta para construir aplicaciones que requieren un alto rendimiento y decenas de miles de usuarios concurrentes.
Las principales características de Tornado son:
- Soporte incorporado para la autenticación de usuarios
- Servicios en tiempo real
- Rendimiento de alta calidad
- Lenguaje de plantillas web basado en Python
- Cliente HTTP sin bloqueo
- Implementación de esquemas de autenticación y autorización de terceros (Google OpenID/OAuth, Facebook Login, Yahoo BBAuth, FriendFeed OpenID/OAuth, Twitter OAuth)
- Soporte para traducción y localización
En términos de popularidad, Tornado se encuentra en algún lugar entre Django y Flask. Digamos que quieres escribir algo en Flask o Django debido a sus características y herramientas, pero también necesitas un rendimiento mucho mejor. En este caso, deberías elegir Tornado.
Otros
Dash
Sitio web oficial | GitHub | PyPI | Awesome
GitHub Stars: 9,856 | GitHub Forks: 1,011
Dash es un framework de Python de código abierto utilizado para construir aplicaciones web analíticas. Es especialmente bueno para los científicos de datos de Python que no están muy familiarizados con el desarrollo web.
Hay dos beneficios básicos de Dash:
- Permite construir aplicaciones altamente interactivas utilizando sólo código Python.
- Se simplifica el uso del poder de las herramientas de Python para la manipulación de datos.
Las aplicaciones de Dash son servidores web que ejecutan Flask y se comunican con paquetes JSON a través de solicitudes HTTP. Su frontend renderiza componentes con React.js.
Las aplicaciones desarrolladas con Dash se renderizan en el navegador web y se pueden desplegar en servidores. Esto también significa que las aplicaciones de Dash son intrínsecamente multiplataforma y están preparadas para móviles.
Los desarrolladores de Dash tienen acceso a la instancia subyacente de Flask y a todas sus propiedades configurables. Para ampliar las capacidades de las aplicaciones de Dash, los desarrolladores también pueden utilizar el rico conjunto de plugins de Flask.
Elegir un framework web de Python
El framework adecuado podría ser todo lo que necesitas para desarrollar un proyecto exitoso. Realmente esperamos que hayas encontrado un framework interesante en este artículo. También tenemos otro, los 17 mejores frameworks web de Python de 2017, por si te interesa explorar más opciones.
Nos encantaría que visitaras nuestra página corporativa de GitHub. Nuestros desarrolladores de SteelKiwi se esfuerzan por innovar en el mundo de la tecnología, y cuanta más gente se involucre, mejor.