Petty Little Fun # 2: Starlette


Visión del túnel


Dio la casualidad de que muchas aplicaciones web están escritas en Python. Este nicho de desarrollo de Python fue compartido casi por completo entre dos jugadores saludables: Django y Flask. Por lo tanto, un gran porcentaje de programadores de Python se dedican a trabajar con estos dos marcos.


Por esta razón, muchos desarrolladores de Python tienen algún tipo de visión de túnel: su enfoque de ingeniería está bloqueado entre las dos bibliotecas.


Algunos programadores no se limitan a Djano y Flask y agregan todo tipo de cosas nuevas a sus herramientas de combate. Por ejemplo, el marco de moda Sanic .


Cambio tectónico: de WSGI a ASGI


Durante el período de rápida adaptación de Python a las necesidades de desarrollo web, la comunidad ideó el estándar WSGI : Interfaz de puerta de enlace de servidor web. Este protocolo describe cómo un servidor web puede enviar solicitudes HTTP para su procesamiento en una aplicación Python y recibir respuestas desde allí.


WSGI allanó el camino para el desarrollo de muchos marcos y bibliotecas de desarrollo web. Todos eran diferentes en su arquitectura, pero igual en su forma de comunicarse con un servidor web externo. WSGI fue introducido por la comunidad ya en 2003, y todos los marcos web clásicos populares para mascotas (incluidos Django y Flask) aún lo admiten.


Los problemas con WSGI comenzaron después de que aparecieran potentes herramientas para ejecutar código y corutinas de forma asíncrona en el núcleo de Python. WSGI es antiguo y no está enfocado en absoluto en trabajar con nuevas características de lenguaje. Por lo tanto, era necesario un nuevo protocolo asíncrono para comunicar un servidor web con programas Python. Entonces apareció ASGI (Asynchronous Server Gateway Interface), un descendiente ideológico de WSGI , pero con rutinas y asincronía.


Los desarrolladores de los viejos marcos fueron tomados como rehenes por su audiencia: simplemente no pueden tomar y transferir sus marcos al enfoque asincrónico (esto romperá el código y destruirá la compatibilidad), por lo que todo el desarrollo que usa ASGI se concentró en los nuevos marcos lanzados en los últimos años, y Django


Starlette: un marco brillante



Starlette es un marco nuevo, ágil y genial que implementa el enfoque ASGI. Todo se centra en la asincronía y los nuevos chips de la tercera rama de Python.


Además, Starlette tiene muchas cosas buenas.


  • GraphQL fuera de la caja. Sí, este nuevo enfoque para desarrollar interacciones cliente-servidor comienza a impulsar REST y toma su lugar en el mundo de los marcos web.
  • Los sockets web ya están integrados y listos para funcionar.
  • Conjunto de middleware listo para usar para trabajar con autorización / autenticación, CORS.
  • Tareas asincrónicas incorporadas.

Loción sólida - FastAPI



A algunos programadores de Starlette les gustó mucho y crearon una extensión para este marco - FastAPI


FastAPI es, de hecho, una mancha en las clases nativas de Starlette , que agrega un montón de nuevas características al marco ya bueno.


  • Buns para crear servicios API REST + documentación Swagger para métodos. Starlette se enfoca en GraphQL de moda, FastAPI se encarga de aquellos que vieron REST .
  • Dispositivos convenientes basados ​​en información sobre herramientas de tipos de variables. Por ejemplo, validadores de datos integrados.
  • Buena utilidad para autenticación y procesos de autenticación: soporte para JWT, OAuth2.

Y una serie de pequeñas comodidades y servicios.


En el residuo seco


Es hora de sumergirse en el mundo de ASGI y sus marcos (a menos, por supuesto, que ya lo haya hecho). Las soluciones asincrónicas aún están lejos de dominar el mercado, pero están avanzando activamente. Y antes que nada, por su velocidad.

Source: https://habr.com/ru/post/454440/


All Articles