Los 9 mejores marcos de trabajo de Python para crear aplicaciones pequeñas y empresariales

Python es a la vez un juguete divertido y un lanzallamas aterrador. Lo mismo ocurre con lo que puedes hacer con Python.

Python es amado por aficionados, científicos y arquitectos por igual.

Es muy fácil comenzar, tiene abstracciones de orden superior y capacidades de metaprogramación para construir sistemas grandes y complejos, y tiene un montón de bibliotecas para hacer casi cualquier cosa. Claro, existen limitaciones cuando se trata de simultaneidad y escritura fuerte, pero puede solucionarlas.

En este artículo, echaremos un vistazo a algunos de los mejores frameworks de Python cuando se trata de crear aplicaciones web grandes y pequeñas.

Django

los Django framework ha resistido la prueba del tiempo, el marco web de referencia para la comunidad de Python. Si asaltaste a un desarrollador de Python mientras dormía y lo obligaste a construir una aplicación web a punta de pistola, automáticamente buscaría Django de la misma manera que un Rubyist buscaría Rails.

Y hay una buena razón para ello. Django es, como dice el eslogan, «un marco web para perfeccionistas con fechas límite». Es lo que se llama un marco de «baterías incluidas» (al igual que Python es un lenguaje de baterías incluidas), que proporciona todas las funciones comunes listas para usar.

Con estas características integradas, Django reduce enormemente el tiempo de desarrollo:

  • Un ORM práctico y agradable, con migraciones creadas y aplicadas automáticamente por el marco.
  • Scaffolding para la generación automática del panel de administración basado en sus modelos.
  • Soporte para cookies, sesiones, middleware, plantillas, etc.
  • Las funciones de seguridad como prevención XSS, prevención CRSF, etc., se aplican automáticamente.
  • Funciona con prácticamente todas las bases de datos que existen (es fácil encontrar adaptadores donde no existe soporte oficial)
  • Sin embargo, soporte de primera clase para datos geográficos y consultas espaciales. GeoDjango

Y mucho, mucho más. Baste decir que Django es un framework web completo y amigable.

¿Es Django para ti?

Absolutamente sí.

Django tiene excelente sentido para todos los casos de uso, ya sea para la creación rápida de prototipos o la planificación de una aplicación empresarial. La única aspereza con la que te encontrarás es la estructura del marco. Dado que Django hace todo lo posible para que el desarrollo sea rápido y fácil para ti, impone su estructura (un concepto llamado «convención sobre configuración») al desarrollador, con lo que quizás no estés de acuerdo. Por ejemplo, si desea reemplazar Django ORM con algo más (por ejemplo, SQL Alchemy), prepárese para las sorpresas.

¿Está interesado en convertirse en desarrollador full-stack con Django y Python? – Mira esto fantástico curso en línea.

Matraz

Si bien Django ocupa casi toda la atención en el desarrollo web de Python, Matraz es un fuerte contendiente.

A diferencia de Django, Flask es un «micro-marco», lo que significa que se enfoca en hacer bien algunas cosas mínimas y deja el resto a usted. Este “el resto depende de ti” puede ser una fuente de frustración o alegría, dependiendo de cuáles sean tus objetivos. Para aquellos que saben lo que están haciendo y quieren diseñar con amor sus aplicaciones web eligiendo los componentes de su elección, Flask es una bendición.

Flask ofrece las siguientes características:

  • Enrutamiento, plantillas, gestión de sesiones y otras características útiles.
  • Soporte completo para pruebas unitarias
  • Una arquitectura mínima conectable
  • Soporte REST de primera clase
  • Compatibilidad con Blueprints, la arquitectura única de Flask para pequeñas aplicaciones web
  • Elige tus paquetes para ORM, migraciones, etc.
  • Estructura de aplicación flexible: coloque sus archivos donde tengan más sentido para usted
  • Servicio de archivos estáticos
  • Cumple con WGSI

¿Es Flask para ti?

Como ya se dijo, Flask es un marco web mínimo, con todo dividido en componentes individuales que puede intercambiar. Si tiene prisa por construir un prototipo, pasará mucho tiempo tomando decisiones triviales sobre la base de datos, la estructura de carpetas, el enrutamiento, etc., que pueden resultar contraproducentes. Flask funciona mejor cuando estás en un proyecto serio y estable de mediana a gran escala, especialmente API REST.

Botella

Si pensó que el enfoque de Flask no era lo suficientemente mínimo y que aún le gustaría tener más control, salude a Botella.

Bottle se despoja aún más, hasta el punto en que la única dependencia es la biblioteca estándar de Python. Esto significa que no pip install this o pip install that, aunque lo más probable es que necesite hacerlo en poco tiempo. He aquí por qué Bottle se destaca para algunas personas:

  • Implementación de un solo archivo. Sí, toda su aplicación vive en un solo archivo «.py».
  • Sin dependencias externas. Si tiene instalada la versión correcta de Python, está listo para comenzar.
  • Proporciona su motor de plantillas, que se puede intercambiar con Jinja2, Mako o Cheetah.
  • Compatibilidad con formularios, encabezados, cookies y carga de archivos.
  • Servidor web incorporado, que se puede reemplazar fácilmente.

¿Botella es para ti?

Si está creando una aplicación realmente pequeña (digamos, menos de 500 líneas de código) sin requisitos especiales, Bottle podría tener mucho sentido para usted. Es un enfoque completo y sensato para crear aplicaciones web, pero en la práctica, encontrará que Bottle lo obstaculiza más que lo ayuda. La razón es que el mundo real siempre está cambiando y antes de que te des cuenta. Los nuevos requisitos caerán sobre su cabeza. En ese momento, poner todo en un solo archivo se convertiría en una tarea.

Además, si crees que Bottle y Flask son casi iguales, tienes razón. Propuestas de fusionando los dos datan de 2012, e incluso Armin, el creador de Flask, está de acuerdo con eso. Sin embargo, Marcel, el creador de Bottle, mantiene una estricta distinción ideológica debido al enfoque de fila única e insiste en que los dos permanezcan separados.

Zope

Zope Es complicado de explicar, pero lo intentaré. Sí, es un marco web que se puede usar para crear aplicaciones grandes o pequeñas, pero eso no es todo. Zope es más una plataforma que consta de herramientas (marcos web incluidos) creadas bajo la filosofía de Zope y mantenidas por Zope Corporation.

Zope tiene varios componentes y características interesantes adecuados para el desarrollo de aplicaciones empresariales:

  • Una arquitectura de descubrimiento y registro de componentes para configurar una aplicación grande.
  • ZODB — (la única) base de datos de objetos para Python para almacenar objetos de forma nativa.
  • Marco completo y estándares para sistemas de gestión de contenido
  • Un conjunto de marcos de aplicaciones web: el canónico todavía se llama Zope, aunque se han construido varios marcos nuevos (como Grok) sobre él.
  • Estándares sólidos para el desarrollo, lanzamiento y mantenimiento de software.

¿Zope es para ti?

Si busca un entorno altamente estructurado para crear aplicaciones realmente grandes, Zope es bueno. Dicho esto, también te encontrarás con una buena cantidad de problemas. Si bien Zope continúa evolucionando, la comunidad es realmente pequeña, hasta el punto de que muchos desarrolladores de Python ni siquiera han oído hablar de ella. Encontrar tutoriales y documentación extensa es difícil, así que prepárese para investigar mucho (¡aunque la comunidad es realmente útil!). Además, es posible que los desarrolladores de Python con los que te encuentres no quieran aprender Zope y «diluir» su conjunto de habilidades.

turboengranajes

turboengranajes es un marco altamente flexible que tiene una arquitectura genuinamente componible. Es un marco que se escala según sus necesidades, y puede usarlo para crear una aplicación de un solo archivo o un gigante de múltiples inquilinos.

TurboGears tiene algunas características elegantes, algunas de las cuales no están presentes en los marcos populares (como Django) o son difíciles de construir:

  • Soporte de primera clase para múltiples bases de datos
  • Transacciones de múltiples bases de datos
  • Altamente modular: comience con un solo archivo y amplíe todo lo que necesite
  • Un poderoso ORM (SQLAlchemy, que es más maduro y capaz que el ORM de Django)
  • Arquitectura conectable basada en la especificación WSGI
  • Compatibilidad integrada con fragmentación de bases de datos
  • Una interfaz basada en funciones en lugar de jerarquías profundas y rígidas orientadas a objetos.

¿Es TurboGears para ti?

Si desea desarrollarse felizmente y quiere un marco probado, maduro y robusto lejos del ruido de los medios de «próxima generación increíble» y todo eso, TurboGears es una excelente opción. Es muy respetado en la comunidad y tiene una documentación completa y extensa. Claro, TurboGears no es obstinado, lo que significa que el tiempo de instalación y configuración inicial puede ser mayor, pero es el marco ideal para el desarrollo de aplicaciones empresariales.

web2py

web2py comenzó como un proyecto de pasatiempo y se lanzó en 2007. Sus objetivos son hacer que el desarrollo web sea fácil y accesible para todos.

Como resultado, Web2py lleva el enfoque de dependencia cero al extremo: no tiene requisitos, nada que instalar e incluye un editor basado en web con todas las funciones para el desarrollo, la administración de la base de datos y la implementación.

Casi puede pensar en él como Android Studio, que es más un entorno completo que solo un marco. Algunas buenas características que tiene Web2py son:

  • Prácticamente sin curva de aprendizaje.
  • Núcleo mínimo (solo 12 objetos), ¡que incluso se puede memorizar!
  • Plantillas de Python puro
  • Protección contra XSS, CSRF y otros ataques
  • Una API agradable y consistente

¿Es Web2py para ti?

Web2py es un marco estable y divertido, pero es difícil recomendarlo frente a otras opciones como Django, Flask, etc. Apenas hay trabajos, y la historia de las pruebas unitarias no es buena. Dicho esto, es posible que disfrute de la API de código y de la experiencia general que ofrece el marco, especialmente si está creando API REST.

cerezapy

cerezapy es otro micromarco que tiene como objetivo proporcionar la funcionalidad básica del marco y salir rápidamente del camino.

Si bien es comparable a otros microframeworks como Flask, CherryPy se jacta de alguna distinción:

  • Contiene un servidor de subprocesos múltiples incorporado (algo que permanece en la lista de deseos de Flask)
  • ¡El servidor web (único) puede albergar múltiples aplicaciones!
  • Sirva su aplicación como una aplicación WSGI (para interactuar con otras aplicaciones WSGI) o un servidor HTTP simple (que funciona mejor)
  • Soporte de primera clase para creación de perfiles y pruebas unitarias
  • Se ejecuta en PyPy (para los verdaderos adictos al rendimiento), Jython e incluso Android

CherryPy hace todo esto, y luego lo habitual que esperarías de un marco web.

¿Es CherryPy para ti?

Si está creando servicios RESTful principalmente, CherryPy es un competidor mucho más serio que Flask. Es un marco de una década que ha madurado muy bien y es adecuado para aplicaciones pequeñas y grandes por igual.

Sanic

El surgimiento de Node y su modelo de programación asincrónica dejó a muchas comunidades sintiéndose rezagadas, incluida Python. En respuesta, una ráfaga de marcos web asincrónicos ha aparecido en el radar, Sanic siendo uno de ellos.

Sanic está muy inspirado en Flask, en la medida en que tomó prestados los decoradores de rutas, Blueprints y otros fundamentos de anzuelos y plomadas. Y no se avergüenzan de admitirlo. Lo que Sanic trae a la mesa, si eres fanático de Flask, es E/S real sin bloqueo para cumplir con los niveles de rendimiento de una aplicación Node. En otras palabras, ¡Sanic es Flask con soporte async/await!

En comparación con CherryPy, Sanic tiene una ventaja de rendimiento increíble (¡solo piense en cómo le iría contra Flask!). Echa un vistazo a los siguientes resultados probados por tejido de datos:

Como puede ver, una vez que los números de concurrencia comienzan a exceder los 50 por segundo, CherryPy prácticamente se ahoga y arroja una alta tasa de fallas.

¿Sanic es para ti?

Si bien las características de rendimiento de Sanic superan todo lo demás, puede que no sea la mejor opción para su próximo proyecto. La razón principal es la falta de bibliotecas asíncronas. La mayor parte de las herramientas y bibliotecas de Python existentes se escribieron para la versión de CPython de subproceso único, sin previsión de operaciones asincrónicas o de alta simultaneidad. Si, por ejemplo, su ORM favorito no admite operaciones asincrónicas, el objetivo de usar Sanic se pierde.

Debido a estas razones de madurez y disponibilidad, no examinaremos más marcos asíncronos en Python.

masonita

Me encontré con este marco hace un tiempo y pensé que era un paso en la dirección correcta. Desde entonces, se lanzó la versión 2.0 y siento que finalmente ha llegado el momento de dar masonita un poco de amor.

En pocas palabras, Masonite es la versión Python de Laravel (un famoso marco PHP, en caso de que no lo supieras). ¿Por que importa? Es importante porque Laravel se creó sobre los principios de Ruby on Rails y, juntos, estos dos marcos permiten a los desarrolladores que no son de Ruby experimentar el «estilo Rails» de hacer las cosas.

Los desarrolladores de Laravel (y, hasta cierto punto, Rails) se sentirán como en casa y estarán listos y funcionando literalmente en muy poco tiempo. Cuando probé Masonite (y envié uno o dos problemas, ¡incluido un error!), Pude crear API REST sin pensar exactamente porque mi memoria muscular Laravel estaba haciendo todo.

Como un marco de pila completa con baterías incluidas, Masonite trae varias cosas interesantes a la mesa:

  • ORM de estilo de registro activo
  • Migraciones de bases de datos (que, a diferencia de Django, deben ser creadas por el desarrollador)
  • Un poderoso contenedor IoC para inyección de dependencia
  • CLI propio (llamado «craft») para tareas de andamiaje y ejecución
  • Soporte de primera clase para pruebas unitarias

El mayor «rival» de Masonite es Django, ya que la comunidad está haciendo todo lo posible para comercializar el marco como fácil, agradable y la próxima gran novedad. Si superará a Django es algo que el tiempo dirá (si me preguntan, tiene un tiro decente), pero para una discusión comparando los dos, vea aquí y aquí.

¿Es Masonite para ti?

Masonite todavía es un bebé en comparación con Django, por lo que no hay forma de que pueda recomendarse sobre Django. Dicho esto, si te gusta la forma Rails (o la forma Laravel) de hacer las cosas, apreciarás lo que Masonite tiene para ofrecer. Es ideal para construir rápidamente prototipos que necesitan todo preconfigurado y fácil de cambiar.

Conclusión

No hay escasez de marcos de trabajo de Python, grandes y pequeños. Si bien puede seleccionar casi cualquier cosa para un proyecto pequeño, una aplicación empresarial tiene demandas que no muchos de estos marcos pueden cumplir. Si me preguntas, para el desarrollo empresarial, lo que me viene a la mente son Django (hasta cierto punto), Zope y TurboGears. E incluso entre esos, me inclino por TurboGears.

Dicho esto, cualquier arquitecto que se precie puede elegir un micromarco y desplegar su arquitectura. Y esto es más o menos lo que sucede en la práctica, lo que explica el éxito de Flask e ideas similares.

Si eres un novato, entonces este curso en línea Sería útil aprender Python.

A continuación, explore algunos de los marcos de Python especializados para crear API.