Python es un juguete divertido y un lanzallamas intimidante. Lo mismo ocurre con lo que puedes hacer con Python.
Python es amada por aficionados, científicos y arquitectos.
Es muy fácil comenzar, tiene abstracciones de orden superior y capacidades de metaprogramación para construir sistemas grandes y complejos, y tiene muchas bibliotecas para hacer casi cualquier cosa. Por supuesto, hay limitaciones cuando se trata de concurrencia y tipificación estricta, pero puede evitarlas.
En este artículo, echaremos un vistazo a algunos de los mejores marcos de Python para construir aplicaciones web grandes y pequeñas.
Django
Django Framework ha resistido la prueba del tiempo y se ha convertido en un marco web popular para la comunidad de Python. Si ataca a un desarrollador de Python mientras duermen y los obliga a construir una aplicación web a punta de pistola, alcanzarán automáticamente Django como Rubyist busca rieles.
Y hay una buena razón para eso. Django es, como dice el lema, «un marco web para los perfeccionistas con plazos». Es lo que se llama marco de «baterías en la caja» (muy parecido a cómo Python es un lenguaje con baterías) que proporciona toda la funcionalidad estándar fuera de la caja.
Con estas características incorporadas, Django reduce significativamente el tiempo de desarrollo
- El ORM agradable y fácil de usar con migraciones creadas y aplicadas automáticamente por el marco.
- Andamiaje para generar automáticamente el panel de administración en función de sus modelos.
- Soporte para cookies, sesiones, middleware, plantillas, etc.
- Las características de seguridad como la prevención de XSS, la prevención de CRSF, etc. se aplican automáticamente.
- Funciona con casi las siete bases de datos existentes (es fácil encontrar adaptadores para los cuales no hay soporte oficial)
- Soporte de primera clase para datos geográficos y consultas espaciales. Geodjango
Y mucho, mucho más. Baste decir que Django es un marco web completo y fácil de usar.
¿Django es adecuado para ti?
Django es excelente para todos los casos de uso, ya sea prototipos rápidos o planeando una aplicación empresarial. El único borde áspero que encontrará es la estructura del marco. Debido a que Django hace todo lo posible para que el desarrollo sea rápido y fácil para usted, impone su estructura (un concepto llamado «Convención es más importante que la configuración») en el desarrollador, con el que puede no estar de acuerdo. Por ejemplo, si desea reemplazar a Django Orm con algo más (digamos, alquimia SQL), prepárese para sorpresas.
¿Quieres convertirte en un desarrollador completo con Django y Python?- Mira este fantástico curso en línea.
Colba
Mientras Django toma casi todo el centro de atención en el desarrollo web de Python, Kolba es un fuerte contendiente.
A diferencia de Django, Flask es un «microframework», lo que significa que se centra en hacer algunas cosas mínimas bien y te deja el resto. Que «el resto depende de usted» puede ser una fuente de frustración o alegría, dependiendo de sus objetivos. Para aquellos que saben lo que están haciendo y quieren construir con amor sus aplicaciones web eligiendo los componentes de su elección, Flask es un regalo del cielo.
Flask ofrece las siguientes características:
- Enrutamiento, plantillas, gestión de sesiones y otras características útiles.
- Soporte completo para pruebas unitarias
- Arquitectura mínima de conexión
- Soporte de descanso de primera clase
- Soporte de planos, arquitectura de frascos únicos para pequeñas aplicaciones web.
- Elija sus paquetes para ORM, migración, etc.
- Estructura de aplicación flexible: coloque archivos donde sean más importantes para usted.
- Distribución de archivos estáticos
- Compatible con WGSI
Como se mencionó, Flask es un marco web minimalista donde todo se descompone en componentes individuales que se pueden reemplazar. Si tiene prisa por el prototipo, pasará mucho tiempo tomando decisiones triviales sobre la base de datos, la estructura de la carpeta, el enrutamiento, etc., que puede ser contraproducente. Flask funciona mejor cuando trabaja en un proyecto estable y grave a mediana a gran escala, especialmente con API REST.
Botella
Si cree que el enfoque de Flask no es lo suficientemente mínimo y aún necesita más control, saluda a la botella.
Botella tira aún más, hasta el punto en que la única dependencia es la biblioteca estándar de Python. Eso significa que PIP no lo instala o PIP no lo instala, aunque probablemente lo necesitará pronto. Es por eso que Bottle se destaca para algunas personas:
- Implementación de un solo archivo. Sí, toda su aplicación está en un solo archivo «. py».
- No hay dependencias externas. Si tiene la versión correcta de Python instalada, está todo configurado.
- Suministra su propio motor de plantilla que puede ser reemplazado por Jinja2, Mako o Cheetah.
- Admite formularios, encabezados, cookies y cargas de archivos.
- Servidor web incorporado que se puede reemplazar fácilmente.
Botella para ti?
Si está construyendo una aplicación muy pequeña (por ejemplo, menos de 500 líneas de código) sin ningún requisito especial, la botella podría ser de gran valor para usted. Es un enfoque completamente serio para construir aplicaciones web, pero en la práctica encontrará que la botella le dificulta más que lo ayuda. La razón es que el mundo real siempre está cambiando, y antes de que te des cuenta. Se acumularán nuevos requisitos en su cabeza. En ese momento, poner todo en un solo archivo se convertiría en una tarea.
Además, si crees que la botella y el frasco son casi idénticos, tienes razón. Las propuestas para fusionarlos se remontan a 2012, e incluso Armin, el creador de Flask, está de acuerdo. Sin embargo, Marcel, el creador de Bottle, mantiene una diferencia ideológica estricta debido al enfoque de un solo archivo e insiste en que permanecen separados.
Zope
Zope es difícil de explicar, pero lo intentaré. Sí, es un marco web que se puede usar para construir aplicaciones grandes y pequeñas, pero eso no es todo lo que es. Zope es más una plataforma que consiste en herramientas (incluidos los marcos web) construida de acuerdo con la filosofía de Zope y mantenida por la Corporación Zope.
Zope tiene varios componentes y características interesantes adecuados para el desarrollo de aplicaciones empresariales:
- Una arquitectura de registro y descubrimiento de componentes para personalizar una gran aplicación.
- ZODB, la (única) base de datos de objetos para Python para el almacenamiento de objetos nativos.
- Un marco y estándares completos para los 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 (por ejemplo, Grok).
- Estándares estrictos para el desarrollo de software, liberación y mantenimiento.
Si necesita un entorno bien estructurado para construir aplicaciones realmente grandes, Zope es la que es para usted. Sin embargo, también se encontrará con su parte justa de problemas. Mientras Zope continúa creciendo, la comunidad es muy pequeña, hasta el punto de que muchos desarrolladores de Python ni siquiera han oído hablar de ella. Es difícil encontrar tutoriales y documentación extensa, así que prepárese para cavar mucho (¡aunque la comunidad es realmente útil!). Además, los desarrolladores de Python que encuentres pueden no querer aprender a Zope y «diluir» su conjunto de habilidades.
Turbogears
TurboGears es un marco muy flexible con una arquitectura verdaderamente componente. Es una plataforma que escala a sus necesidades, y puede usarla para construir una aplicación de un solo archivo o un gigante de múltiples inquilinos.
TurboGears tiene varias características elegantes, algunas de las cuales faltan en marcos populares (como Django) o difíciles de implementar:
- Soporte de primera clase para múltiples bases de datos
- Transacciones con múltiples bases de datos
- Alta modularidad: comience con un solo archivo y escala tanto como sea necesario.
- Potente ORM (Sqlalchemy, más maduro y capaz que el ORM de Django)
- Arquitectura conectable basada en la especificación de WSGI
- Soporte incorporado para la segmentación de la base de datos
- Interfaz basada en características, en oposición a las jerarquías profundas y rígidas orientadas a objetos.
¿Turbogears es adecuado para ti?
Si desea desarrollarse de una manera divertida y quiere una plataforma probada, madura y confiable lejos del ruido de los medios sobre «increíble próxima generación» y similares, TurboGears es una gran opción. Es muy respetado en la comunidad y tiene documentación completa y extensa. Claro, TurboGears no es seguro, lo que significa que la instalación inicial y el tiempo de personalización pueden ser más largos, pero es un entorno ideal para el desarrollo de aplicaciones empresariales.
Web2py
Web2py comenzó como un proyecto de pasatiempo y se lanzó en 2007. Su objetivo es hacer que el desarrollo web sea fácil y accesible para todos.
Como resultado, Web2py adopta el enfoque de dependencia cero al extremo: no tiene requisitos, nada para instalar e incluye un editor web con todas las funciones para el desarrollo, la gestión de bases de datos e implementación.
Puede considerarlo como Android Studio, que es más un entorno completo que un marco. Algunas características agradables que tiene Web2py:
- Prácticamente sin curva de aprendizaje.
- ¡Mínimo núcleo (solo 12 objetos) que incluso puedes memorizar!
- Plantillas en Python puro
- Protección contra XSS, CSRF y otros ataques
- API agradable y consistente
¿Web2py es adecuado para ti?
Web2py es un marco estable e interesante, pero es difícil recomendarlo en comparación con otras opciones como Django, Flask, etc. Los trabajos son casi inexistentes y la historia de las pruebas unitarias no es muy buena. Sin embargo, es posible que le guste el código API y la experiencia general ofrecida por el marco, especialmente si está construyendo API REST.
Cherrypy
Cherrypy es otro microframework que tiene como objetivo proporcionar una funcionalidad del marco básico y sacarlo rápidamente.
Aunque se puede comparar con otros microframeworks como Flask, Cherrypy cuenta con algunas diferencias:
- Contiene un servidor multiproceso incorporado (algo que queda en la lista de deseos de Flask).
- ¡Un servidor web (único) puede alojar múltiples aplicaciones!
- Servir su aplicación como una aplicación WSGI (para comunicarse con otras aplicaciones WSGI) o un servidor HTTP simple (que funciona mejor).
- Profiles de primera clase y soporte de pruebas unitarias
- Se ejecuta en Pypy (para entusiastas del rendimiento reales), Jython e incluso Android.
Cherrypy hace todo esto y luego todo lo que esperarías de un marco web.
¿Es correcto Cherrypy para ti?
Si está construyendo principalmente servicios RESTful, Cherrypy es un contendiente mucho más serio que Flask. Es un marco de una década que ha madurado bien y es adecuado para aplicaciones pequeñas y grandes.
Sanik
El desarrollo de Node y su modelo de programación asincrónico han dejado a muchas comunidades atrás, incluida Python. En respuesta, han surgido muchos marcos web asincrónicos. Sanic es uno de ellos.
Sanic está fuertemente inspirado en Flask, ya que tomó prestados los decoradores de ruta, los planos y otros elementos básicos de la línea de gancho y la plantilla. Y no se avergüenzan de admitirlo. Lo que ofrece SANIC, si eres un fanático del frasco, son verdaderas E/S sin bloqueo que coincide con los niveles de rendimiento de una aplicación de nodo.¡En otras palabras, SANIC es Flask con Async/espera soporte!
En comparación con Cherrypy, SANIC tiene una increíble ventaja de rendimiento (¡solo piense cómo se vería en comparación con el frasco!). Consulte los siguientes resultados probados por DataWeave:
Como puede ver, una vez que el número de concurrencia comienza a exceder los 50 por segundo, Cherrypy prácticamente se asfixia y produce una alta tasa de falla.
¿SANIC es adecuado para ti?
Si bien el rendimiento de SANIC es superior a 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 asincrónicas. La mayoría de las herramientas y bibliotecas de Python existentes fueron escritas para la versión de CPYTHON sin considerar al alto paralelismo o operaciones asincrónicas. Si, por ejemplo, su ORM favorito no admite operaciones asincrónicas, se pierde el punto de usar sanic.
Debido a estas razones de madurez y accesibilidad, ya no consideraremos marcos asincrónicos en Python.
Masonita
Me encontré con este marco hace un tiempo y pensé que era un paso en la dirección correcta. Desde entonces, la versión 2. 0 se ha lanzado y siento que finalmente es hora de darle algo de amor a Masonite.
En pocas palabras, Masonite es una versión de Python de Laravel (un marco PHP bien conocido, en caso de que no lo supiera).¿Por qué importa esto? Importa porque Laravel se basó en los principios de Ruby en Rails, y juntos los dos marcos permiten a los desarrolladores que no usan Ruby experimentar la «Vía de los Rail» en el trabajo.
Los desarrolladores de Laravel (y, hasta cierto punto, Rails) se sentirán en casa y estarán en funcionamiento en literalmente ningún tiempo. Cuando probé Masonite (y envié un par de problemas, ¡incluido un error!), Pude crear API REST sin ningún pensamiento porque mi memoria muscular Laravel hizo todo.
Como un marco con batería con todas las funciones, Masonite ofrece algunas cosas interesantes:
- Orms activos de estilo de escritura
- Migraciones de bases de datos (que, a diferencia de Django, deben ser creadas por el desarrollador)
- Poderoso contenedor de COI para inyección de dependencia
- Interfaz de línea de comandos patentada (llamada «Craft») para crear plantillas y ejecutar tareas.
- Soporte de primera clase para pruebas unitarias
El mayor «competidor» para Masonite es Django, ya que la comunidad está haciendo todo lo posible para promover este marco como simple, encantador y la próxima gran cosa. Si Django lo superará, el tiempo dirá (si me preguntas, tiene una oportunidad decente), pero para una discusión que compara los dos, ver aquí y también aquí.
¿Es la masonita un buen ajuste para ti?
La masonita sigue siendo un bebé en comparación con Django, por lo que no se puede recomendar sobre Django. Sin embargo, si le gustan los rieles (o Laravel), apreciará lo que Masonite tiene para ofrecer. Es perfecto para prototipos rápidos que requieren que todo sea preconfigurado y fácilmente conmutable.
Conclusión
No hay escasez de marcos de Python, grandes y pequeños. Si bien puede recoger cualquier cosa para un proyecto pequeño, una aplicación empresarial tiene requisitos que no muchos de estos marcos pueden cumplir. Si me pregunta sobre el desarrollo empresarial, me vienen a la mente Django (hasta cierto punto), Zope y Turbogears. E incluso entre ellos, me estoy inclinando hacia TurboGears.
Sin embargo, cualquier arquitecto decente puede recoger un microframework e implementar su arquitectura. Esto es lo que sucede en la práctica, que explica el éxito de Flask y ideas similares.
Si eres un principiante, este curso en línea sería útil para aprender Python.
Luego explore algunos marcos especializados de Python para crear API.