🚀 Prueba Zilliz Cloud, el Milvus completamente gestionado, gratis—¡experimenta un rendimiento 10 veces más rápido! Prueba Ahora>>

milvus-logo
LFAI
  • Home
  • Blog
  • ¿Por qué elegir FastAPI en lugar de Flask?

¿Por qué elegir FastAPI en lugar de Flask?

  • Engineering
December 03, 2021
Yunmei

Para ayudarle a empezar rápidamente con Milvus, la base de datos vectorial de código abierto, hemos publicado otro proyecto de código abierto afiliado, Milvus Bootcamp en GitHub. Milvus Bootcamp no sólo proporciona scripts y datos para pruebas comparativas, sino que también incluye proyectos que utilizan Milvus para construir algunos MVP (productos mínimos viables), como un sistema de búsqueda inversa de imágenes, un sistema de análisis de vídeo, un chatbot de control de calidad o un sistema de recomendación. Puede aprender a aplicar la búsqueda de similitud vectorial en un mundo lleno de datos no estructurados y obtener experiencia práctica en Milvus Bootcamp.

2.png 2.png

Proporcionamos servicios front-end y back-end para los proyectos de Milvus Bootcamp. Sin embargo, recientemente hemos tomado la decisión de cambiar el framework web adoptado de Flask a FastAPI.

Este artículo tiene como objetivo explicar nuestra motivación detrás de este cambio en el marco web adoptado para Milvus Bootcamp aclarando por qué elegimos FastAPI en lugar de Flask.

Frameworks web para Python

Un marco web se refiere a una colección de paquetes o módulos. Es un conjunto de arquitectura de software para el desarrollo web que le permite escribir aplicaciones o servicios web y le ahorra la molestia de manejar detalles de bajo nivel como protocolos, sockets o gestión de procesos/hilos. El uso de un framework web puede reducir significativamente la carga de trabajo que supone desarrollar aplicaciones web, ya que basta con "enchufar" el código al framework, sin necesidad de prestar más atención a la gestión de la caché de datos, el acceso a bases de datos y la verificación de la seguridad de los datos. Para más información sobre qué es un framework web para Python, consulta Web Frameworks.

Hay varios tipos de frameworks web para Python. Los principales incluyen Django, Flask, Tornado, y FastAPI.

Flask

3.png 3.png

Flask es un microframework ligero diseñado para Python, con un núcleo sencillo y fácil de usar que te permite desarrollar tus propias aplicaciones web. Además, el núcleo de Flask también es extensible. Por lo tanto, Flask soporta la extensión bajo demanda de diferentes funciones para satisfacer sus necesidades personalizadas durante el desarrollo de aplicaciones web. Es decir, con una biblioteca de varios plug-ins en Flask, puede desarrollar potentes sitios web.

Flask tiene las siguientes características:

  1. Flask es un microframework que no depende de otras herramientas específicas o componentes de librerías de terceros para proporcionar funcionalidades compartidas. Flask no tiene una capa de abstracción de base de datos, y no requiere validación de formularios. Sin embargo, Flask es altamente extensible y soporta la adición de funcionalidades de aplicación de forma similar a las implementaciones dentro del propio Flask. Las extensiones relevantes incluyen mapeadores objeto-relacionales, validación de formularios, procesamiento de cargas, tecnologías de autenticación abierta y algunas herramientas comunes diseñadas para marcos web.
  2. Flask es un marco de aplicaciones web basado en WSGI (Web Server Gateway Interface). WSGI es una interfaz sencilla que conecta un servidor web con una aplicación o marco web definido para el lenguaje Python.
  3. Flask incluye dos bibliotecas de funciones básicas, Werkzeug y Jinja2. Werkzeug es un conjunto de herramientas WSGI que implementa peticiones, objetos de respuesta y funciones prácticas, lo que permite construir frameworks web sobre él. Jinja2 es un popular motor de plantillas completo para Python. Tiene soporte completo para Unicode, con un entorno de ejecución sandbox integrado opcional pero ampliamente adoptado.

FastAPI

4.png 4.png

FastAPI es un moderno framework de aplicaciones web para Python que tiene el mismo nivel de alto rendimiento que Go y NodeJS. El núcleo de FastAPI se basa en Starlette y Pydantic. Starlette es un ligero conjunto de herramientas ASGI(Asynchronous Server Gateway Interface) para construir servicios Asyncio de alto rendimiento. Pydantic es una biblioteca que define la validación, serialización y documentación de datos basándose en las sugerencias de tipos de Python.

FastAPI tiene las siguientes características:

  1. FastAPI es un framework de aplicaciones web basado en ASGI, una interfaz de protocolo de pasarela asíncrona que conecta servicios de protocolo de red y aplicaciones Python. FastAPI puede manejar una variedad de tipos de protocolos comunes, incluyendo HTTP, HTTP2 y WebSocket.
  2. FastAPI se basa en Pydantic, que proporciona la función de verificación del tipo de datos de la interfaz. No es necesario verificar adicionalmente el parámetro de la interfaz, ni escribir código adicional para verificar si los parámetros están vacíos o si el tipo de datos es correcto. El uso de FastAPI puede evitar eficazmente errores humanos en el código y mejorar la eficiencia del desarrollo.
  3. FastAPI admite documentos en dos formatos: OpenAPI (antes Swagger) y Redoc. Por lo tanto, como usuario no es necesario gastar tiempo extra escribiendo documentos de interfaz adicionales. El documento OpenAPI proporcionado por FastAPI se muestra en la siguiente captura de pantalla.

5.png 5.png

Flask vs. FastAPI

La siguiente tabla muestra las diferencias entre Flask y FastAPI en varios aspectos.

FastAPIFlask
Pasarela de interfazASGIWSGI
Marco de trabajo asíncrono
RendimientoMás rápidoMás lento
Documentos interactivosOpenAPI, RedocNinguno
Verificación de datos
Costes de desarrolloMás bajosMayores
Facilidad de usoMenorMayor
FlexibilidadMenos flexibleMás flexible
ComunidadMás pequeñaMás activa

¿Por qué FastAPI?

Antes de decidir qué marco de aplicaciones web Python elegir para los proyectos de Milvus Bootcamp, investigamos varios marcos principales como Django, Flask, FastAPI y Tornado, entre otros. Dado que los proyectos en Milvus Bootcamp sirven como referencia para usted, nuestra prioridad es adoptar un marco externo de máxima ligereza y destreza. De acuerdo con esta regla, redujimos nuestras opciones a Flask y FastAPI.

Puedes ver la comparación entre los dos frameworks web en la sección anterior. Lo que sigue es una explicación detallada de nuestra motivación para elegir FastAPI sobre Flask para los proyectos en Milvus Bootcamp. Hay varias razones:

1. Rendimiento

La mayoría de los proyectos en Milvus Bootcamp se construyen en torno a sistemas de búsqueda inversa de imágenes, chatbots de control de calidad, motores de búsqueda de texto, todos los cuales tienen altas demandas de procesamiento de datos en tiempo real. En consecuencia, necesitamos un marco de trabajo con un rendimiento excepcional, que es exactamente un punto destacado de FastAPI. Por lo tanto, desde la perspectiva del rendimiento del sistema, decidimos elegir FastAPI.

2. Eficiencia

Cuando se utiliza Flask, es necesario escribir código para la verificación del tipo de datos en cada una de las interfaces para que el sistema pueda determinar si los datos de entrada están vacíos o no. Sin embargo, al soportar la verificación automática del tipo de datos, FastAPI ayuda a evitar errores humanos en la codificación durante el desarrollo del sistema y puede aumentar enormemente la eficiencia del desarrollo. Bootcamp se posiciona como un tipo de recurso de formación. Esto significa que el código y los componentes que utilizamos deben ser intuitivos y muy eficientes. En este sentido, elegimos FastAPI para mejorar la eficiencia del sistema y mejorar la experiencia del usuario.

3. Marco asíncrono

FastAPI es inherentemente un framework asíncrono. Originalmente, lanzamos cuatro demos, búsqueda inversa de imágenes, análisis de vídeo, chatbot de control de calidad y búsqueda de similitud molecular. En estas demos, puedes cargar conjuntos de datos y se te preguntará inmediatamente "solicitud recibida". Y cuando los datos se hayan cargado en el sistema de demostración, recibirá otro mensaje: "carga de datos correcta". Se trata de un proceso asíncrono que requiere un marco de trabajo compatible con esta función. FastAPI es en sí mismo un marco asíncrono. Para alinear todos los recursos de Milvus, decidimos adoptar un único conjunto de herramientas de desarrollo y software tanto para Milvus Bootcamp como para las demos de Milvus. Como resultado, cambiamos el framework de Flask a FastAPI.

4. Documentos interactivos automáticos

De forma tradicional, cuando terminas de escribir el código para el lado del servidor, tienes que escribir un documento adicional para crear una interfaz, y luego utilizar herramientas como Postman para las pruebas y depuración de la API. Entonces, ¿qué pasa si sólo quiere empezar rápidamente con la parte de desarrollo del lado del servidor web de los proyectos en Milvus Bootcamp sin escribir código adicional para crear una interfaz? FastAPI es la solución. Al proporcionar un documento OpenAPI, FastAPI puede ahorrarle la molestia de probar o depurar las API y colaborar con los equipos de front-end para desarrollar una interfaz de usuario. Con FastAPI, aún puede probar rápidamente la aplicación construida con una interfaz automática pero intuitiva sin esfuerzos adicionales para la codificación.

5. Facilidad de uso

FastAPI es más fácil de usar y desarrollar, lo que le permite prestar más atención a la implementación específica del proyecto en sí. Sin dedicar demasiado tiempo al desarrollo de frameworks web, puede centrarse más en la comprensión de los proyectos en Milvus Bootcamp.

Recapitulemos

Flask y FlastAPI tienen sus propios pros y contras. Como marco de aplicaciones web emergente, FlastAPI, en su núcleo, se basa en conjuntos de herramientas y bibliotecas maduras, Starlette y Pydantic. FastAPI es un framework asíncrono de alto rendimiento. Su destreza, extensibilidad y soporte para la verificación automática de tipos de datos, junto con muchas otras potentes características, nos impulsaron a adoptar FastAPI como el framework para los proyectos Milvus Bootcamp.

Tenga en cuenta que debe elegir el marco adecuado según el escenario de su aplicación si desea construir un sistema de búsqueda de similitud vectorial en producción.

Sobre el autor

Yunmei Li, ingeniera de datos de Zilliz, se licenció en informática por la Universidad de Ciencia y Tecnología de Huazhong. Desde que se unió a Zilliz, ha estado trabajando en la exploración de soluciones para el proyecto de código abierto Milvus y ayudando a los usuarios a aplicar Milvus en escenarios del mundo real. Su principal interés se centra en la PNL y los sistemas de recomendación, y le gustaría profundizar aún más en estas dos áreas. Le gusta pasar tiempo a solas y leer.

¿Buscas más recursos?

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

Sigue Leyendo