🚀 Experimente o Zilliz Cloud, o Milvus totalmente gerenciado, gratuitamente—experimente um desempenho 10x mais rápido! Experimente Agora>>

milvus-logo
LFAI

HomeBlogsPor que escolher FastAPI em vez de Flask?

Por que escolher FastAPI em vez de Flask?

  • Engineering
December 03, 2021
Yunmei

Para o ajudar a iniciar-se rapidamente no Milvus, a base de dados vetorial de código aberto, lançámos outro projeto de código aberto afiliado, o Milvus Bootcamp no GitHub. O Milvus Bootcamp não só fornece scripts e dados para testes de benchmark, mas também inclui projectos que utilizam o Milvus para construir alguns MVPs (produtos mínimos viáveis), como um sistema de pesquisa de imagens invertido, um sistema de análise de vídeo, um chatbot de QA ou um sistema de recomendação. Pode aprender a aplicar a pesquisa de semelhanças vectoriais num mundo repleto de dados não estruturados e obter alguma experiência prática no Milvus Bootcamp.

2.png 2.png

Fornecemos serviços de front-end e back-end para os projectos do Milvus Bootcamp. No entanto, tomámos recentemente a decisão de mudar a estrutura Web adoptada de Flask para FastAPI.

Este artigo tem como objetivo explicar a nossa motivação para esta mudança na estrutura Web adoptada para o Milvus Bootcamp, esclarecendo por que razão escolhemos o FastAPI em vez do Flask.

Frameworks web para Python

Uma framework web refere-se a uma coleção de pacotes ou módulos. É um conjunto de arquitetura de software para desenvolvimento web que permite escrever aplicações ou serviços web e poupa o trabalho de lidar com detalhes de baixo nível, como protocolos, sockets ou gestão de processos/thread. A utilização de uma estrutura Web pode reduzir significativamente a carga de trabalho do desenvolvimento de aplicações Web, uma vez que pode simplesmente "ligar" o seu código à estrutura, sem necessidade de atenção adicional ao lidar com o armazenamento em cache de dados, o acesso à base de dados e a verificação da segurança dos dados. Para mais informações sobre o que é um framework web para Python, veja Frameworks Web.

Existem vários tipos de frameworks web Python. Os mais comuns incluem Django, Flask, Tornado e FastAPI.

Flask

3.png 3.png

Flask é um microframework leve projetado para Python, com um núcleo simples e fácil de usar que permite que você desenvolva suas próprias aplicações web. Além disso, o núcleo do Flask também é extensível. Portanto, o Flask suporta a extensão sob demanda de diferentes funções para atender às suas necessidades personalizadas durante o desenvolvimento de aplicações web. Ou seja, com uma biblioteca de vários plug-ins no Flask, é possível desenvolver sites poderosos.

O Flask tem as seguintes caraterísticas:

  1. O Flask é um microframework que não depende de outras ferramentas específicas ou componentes de bibliotecas de terceiros para fornecer funcionalidades partilhadas. O Flask não tem uma camada de abstração de base de dados e não requer validação de formulários. No entanto, o Flask é altamente extensível e suporta a adição de funcionalidades de aplicação de uma forma semelhante às implementações dentro do próprio Flask. As extensões relevantes incluem mapeadores objeto-relacionais, validação de formulários, processamento de upload, tecnologias de autenticação aberta e algumas ferramentas comuns projetadas para estruturas web.
  2. Flask é uma estrutura de aplicação web baseada em WSGI (Web Server Gateway Interface). A WSGI é uma interface simples que liga um servidor web a uma aplicação ou estrutura web definida para a linguagem Python.
  3. O Flask inclui duas bibliotecas de funções principais, Werkzeug e Jinja2. Werkzeug é um kit de ferramentas WSGI que implementa objetos de solicitação, resposta e funções práticas, o que permite construir estruturas web sobre ele. O Jinja2 é um popular motor de criação de modelos com todas as funcionalidades para Python. Tem suporte total para Unicode, com um ambiente de execução de sandbox integrado opcional, mas amplamente adotado.

FastAPI

4.png 4.png

FastAPI é uma estrutura de aplicação web Python moderna que tem o mesmo nível de alto desempenho que Go e NodeJS. O núcleo do FastAPI é baseado em Starlette e Pydantic. Starlette é um kit de ferramentas de estrutura ASGI(Asynchronous Server Gateway Interface) leve para construir serviços Asyncio de alto desempenho. Pydantic é uma biblioteca que define a validação, serialização e documentação de dados com base em dicas de tipo Python.

FastAPI tem as seguintes caraterísticas:

  1. FastAPI é uma estrutura de aplicação web baseada em ASGI, uma interface de protocolo de gateway assíncrona que conecta serviços de protocolo de rede e aplicações Python. FastAPI pode lidar com uma variedade de tipos de protocolos comuns, incluindo HTTP, HTTP2 e WebSocket.
  2. FastAPI é baseado em Pydantic, que fornece a função de verificar o tipo de dados da interface. Não é necessário verificar adicionalmente o parâmetro da interface ou escrever código adicional para verificar se os parâmetros estão vazios ou se o tipo de dados está correto. A utilização da FastAPI pode efetivamente evitar erros humanos no código e melhorar a eficiência do desenvolvimento.
  3. O FastAPI suporta documentos em dois formatos - OpenAPI (anteriormente Swagger) e Redoc. Por conseguinte, enquanto utilizador, não precisa de perder tempo a escrever documentos de interface adicionais. O documento OpenAPI fornecido pelo FastAPI é mostrado na captura de ecrã abaixo.

5.png 5.png

Flask vs. FastAPI

A tabela abaixo demonstra as diferenças entre o Flask e o FastAPI em vários aspectos.

FastAPIFlask
Interface gatewayASGIWSGI
Estrutura assíncrona
DesempenhoMais rápidoMais lento
Documento interativoOpenAPI, RedocNenhum
Verificação de dados
Custos de desenvolvimentoInferiorMais elevados
Facilidade de utilizaçãoInferiorMaior
FlexibilidadeMenos flexívelMais flexível
ComunidadeMais pequenaMais ativa

Porquê FastAPI?

Antes de decidir qual a framework de aplicação web Python a escolher para os projectos do Milvus Bootcamp, pesquisámos várias frameworks mainstream, incluindo Django, Flask, FastAPI, Tornado, entre outras. Uma vez que os projectos do Milvus Bootcamp servem de referência para si, a nossa prioridade é adotar uma estrutura externa com a máxima leveza e destreza. De acordo com esta regra, reduzimos as nossas escolhas a Flask e FastAPI.

Pode ver a comparação entre as duas frameworks web na secção anterior. Segue-se uma explicação detalhada da nossa motivação para escolher FastAPI em vez de Flask para os projectos do Milvus Bootcamp. Existem várias razões:

1. Desempenho

A maior parte dos projectos do Bootcamp Milvus são construídos em torno de sistemas de pesquisa inversa de imagens, chatbots de QA, motores de pesquisa de texto, todos eles com elevadas exigências de processamento de dados em tempo real. Por conseguinte, precisamos de uma estrutura com um desempenho excecional, o que é exatamente o ponto alto do FastAPI. Por conseguinte, do ponto de vista do desempenho do sistema, decidimos escolher a FastAPI.

2. Eficiência

Ao utilizar o Flask, é necessário escrever código para a verificação do tipo de dados em cada uma das interfaces, para que o sistema possa determinar se os dados de entrada estão vazios ou não. No entanto, ao suportar a verificação automática do tipo de dados, a FastAPI ajuda a evitar erros humanos na codificação durante o desenvolvimento do sistema e pode aumentar muito a eficiência do desenvolvimento. O Bootcamp está posicionado como um tipo de recurso de formação. Isto significa que o código e os componentes que utilizamos devem ser intuitivos e altamente eficientes. Neste sentido, escolhemos a FastAPI para melhorar a eficiência do sistema e a experiência do utilizador.

3. Estrutura assíncrona

A FastAPI é inerentemente uma estrutura assíncrona. Inicialmente, lançámos quatro demonstrações, pesquisa inversa de imagens, análise de vídeo, chatbot de garantia de qualidade e pesquisa de semelhanças moleculares. Nestas demos, pode carregar conjuntos de dados e ser-lhe-á imediatamente solicitado "pedido recebido". E quando os dados forem carregados para o sistema de demonstração, receberá outra mensagem "carregamento de dados bem sucedido". Este é um processo assíncrono que requer uma estrutura que suporte esta funcionalidade. A FastAPI é, ela própria, uma estrutura assíncrona. Para alinhar todos os recursos do Milvus, decidimos adotar um único conjunto de ferramentas e software de desenvolvimento para o Milvus Bootcamp e para as demonstrações do Milvus. Como resultado, mudámos a estrutura de Flask para FastAPI.

4. Documentos interactivos automáticos

De uma forma tradicional, quando se termina de escrever o código para o lado do servidor, é necessário escrever um documento extra para criar uma interface e depois utilizar ferramentas como o Postman para testar e depurar a API. Então, e se apenas quiser começar rapidamente com a parte de desenvolvimento do lado do servidor web dos projectos no Milvus Bootcamp sem escrever código adicional para criar uma interface? FastAPI é a solução. Ao fornecer um documento OpenAPI, a FastAPI pode poupar-lhe o trabalho de testar ou depurar APIs e colaborar com equipas de front-end para desenvolver uma interface de utilizador. Com a FastAPI, pode ainda experimentar rapidamente a aplicação construída com uma interface automática mas intuitiva, sem esforços adicionais de codificação.

5. Facilidade de utilização

A FastAPI é mais fácil de utilizar e desenvolver, permitindo-lhe assim prestar mais atenção à implementação específica do próprio projeto. Sem gastar muito tempo no desenvolvimento de frameworks web, pode concentrar-se mais na compreensão dos projectos no Milvus Bootcamp.

Recapitulação

Flask e FlastAPI têm seus próprios prós e contras. Como um framework de aplicação web emergente, FlastAPI, em seu núcleo, é construído em kits de ferramentas maduros e biblioteca, Starlette e Pydantic. FastAPI é uma estrutura assíncrona de alto desempenho. A sua destreza, extensibilidade e suporte para verificação automática do tipo de dados, juntamente com muitas outras caraterísticas poderosas, levaram-nos a adotar a FastAPI como a estrutura para os projectos Milvus Bootcamp.

Tenha em atenção que deve escolher a estrutura adequada de acordo com o cenário da sua aplicação se pretender criar um sistema de pesquisa de semelhanças vectoriais em produção.

Sobre o autor

Yunmei Li, engenheira de dados da Zilliz, licenciou-se em ciências informáticas na Universidade de Ciência e Tecnologia de Huazhong. Desde que se juntou à Zilliz, tem trabalhado na exploração de soluções para o projeto de código aberto Milvus e tem ajudado os utilizadores a aplicar o Milvus em cenários do mundo real. O seu foco principal é a PNL e os sistemas de recomendação, e gostaria de aprofundar ainda mais o seu foco nestas duas áreas. Gosta de passar tempo sozinha e de ler.

Está à procura de mais 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

Continue Lendo