9 servidores Web Python para experimentar em seu próximo projeto

Nesta lista, apresentamos vários servidores web Python que você pode usar para implantar seus aplicativos Python.

Começaremos entendendo como os servidores web funcionam e a necessidade de interfaces de gateway de servidor. Em seguida, examinaremos a lista de servidores web Python juntamente com seus recursos mais importantes. A maioria deles está disponível como pacotes PyPI que você pode instalar e começar a usar em seus projetos.

Vamos começar!

O que é um servidor web?

Ao desenvolver um aplicativo Python, você usará o servidor de desenvolvimento para testar seu aplicativo. No entanto, quando o desenvolvimento estiver concluído, você precisará implantar seu aplicativo em um servidor de nível de produção. Entre várias camadas de funcionalidades adicionadas no topo, um servidor web deve ter a funcionalidade básica de um servidor HTTP.

O servidor web Python deve ser capaz de lidar com solicitações HTTP (solicitações HTTP simples como GET, PUT e POST) de clientes, como navegadores da web, e retornar a resposta. Essa resposta pode incluir o código de status HTTP indicando se a solicitação foi processada com sucesso ou não. Pode consistir em páginas da Web HTML e dados semiestruturados, como JSON, XML e muito mais.

ASGI vs. WSGI: Noções básicas sobre interfaces de gateway de servidor

Suponha que você desenvolveu um aplicativo Python em um framework de sua escolha, digamos, Django ou Flask. Um servidor convencional pode não conseguir entender e processar as solicitações direcionadas ao aplicativo Python. É aqui que as interfaces de gateway do servidor entram em ação.

Essa interface de gateway pode ser uma interface de gateway de servidor da Web (WSGI) ou uma interface de gateway de servidor assíncrona (ASGI). O servidor da Web recebe uma solicitação de um cliente, que redireciona para a interface do gateway do servidor. A interface (WSGI/ASGI) interage com o aplicativo Python por meio de um callable exposto.

O Web Server Gateway Interface (WSGI) trata as solicitações sequencialmente. Se houver várias solicitações HTTP lentas, elas afetarão a taxa de transferência.

  Como colocar o aplicativo de volta na tela inicial do iPhone

Asynchronous Server Gateway Interface, ou ASGI, é um sucessor do WSGI e tem a capacidade adicional de lidar com solicitações de forma assíncrona.

Suponha que uma solicitação atendida atualmente exija uma leitura do banco de dados (que pode levar muito tempo) e esteja aguardando a resposta. Quando a primeira solicitação está aguardando uma resposta, o ASGI pode lidar com uma segunda solicitação recebida.

Isso contrasta com o WSGI, onde a primeira solicitação deve ser processada para a segunda solicitação. Portanto, o uso de ASGI pode resultar em aumento da taxa de transferência. ASGI também permite que você use recursos Python assíncronos em seu aplicativo.

Servidores Web Python

Agora, liste os servidores da Web que você pode usar para seus aplicativos Python. Também incluímos algumas estruturas que fornecem suporte pronto para uso para servidores prontos para produção. Esta não é uma lista exaustiva e as recomendações do servidor web abaixo não estão em nenhuma ordem específica.

Uvicorn

Se você estiver familiarizado com o desenvolvimento de aplicativos com FastAPI, você já deve ter encontrado o Uvicorn, uma implementação de servidor web. Uvicorn é uma implementação de servidor ASGI para Python.

Para instalar o Uvicorn e dependências associadas usando pip, execute o seguinte comando:

$ pip install uvicorn[standard] 
# includes installation of optional and Cython-based dependencies

A seguir estão as principais características do Uvicorn:

  • Implementação ASGI
  • Suporte para executar aplicativos de um ambiente Python assíncrono
  • A ferramenta de linha de comando com uma extensa lista de opções
  • Suporta aplicativos em execução a partir de funções de fábrica
  • Fornece recursos para controlar instâncias do servidor programaticamente

Gunicorn

Gunicorn é um servidor WSGI para aplicativos Python, conhecido por seus recursos avançados de gerenciamento de processos.

O Uvicorn oferece uma classe de trabalhador Gunicorn, permitindo que você obtenha vantagens de desempenho e gerenciamento de processos simultaneamente. Esta página de documentação contém detalhes sobre como implantar o Gunicorn.

Se você tiver o Python 3.5 e posterior, poderá instalar o Gunicorn usando pip:

$ pip install gunicorn

A seguir estão as principais características do Gunicorn:

  • Simples e rápido
  • Compatível com muitos frameworks web
  • Suporte para uso com um servidor proxy HTTP
  • Gerenciamento avançado de processos

CherryPy

CherryPy é um framework web Python—assim como Django, Flask e FastAPI—mas não tão popular quanto esses frameworks. Com várias versões estáveis, o CherryPy existe e evoluiu para uma estrutura completa por mais de uma década. Ele também tem uma comunidade de desenvolvedores de suporte.

  O que é o Google Stadia?

Você pode conferir o interessante Zen of CherryPy, que transmite a essência de que CherryPy é uma estrutura simples e minimalista, mas poderosa.

CherryPy é um framework Python e não um servidor web, mas está na nossa lista, pois suporta nativamente um servidor de nível de produção – ao contrário da maioria dos outros frameworks.

Para instalar o CherryPy e começar, execute:

$ pip install CherryPy

A seguir estão os principais recursos do CherryPy:

  • Framework Pythonic usando Python orientado a objetos; bem adequado para iniciantes
  • Suporte para um servidor HTTP pronto para produção, Cheroot
  • Mais fácil de aprender do que outros frameworks da web, como Django
  • Suporte para criar e implantar aplicativos Web simples em microsserviços

Dafne

Django é um dos frameworks web Python mais populares. Se você desenvolveu aplicativos com Django, provavelmente já usou o servidor web Daphne. Daphne é uma das primeiras implementações de servidor ASGI usadas como referência para implementações de servidores ASGI.

Daphne está disponível como um pacote PyPI que você pode instalar usando pip.

$ pip install daphne

Aqui está um tutorial detalhado que orientará você na criação de um aplicativo Python completo e pronto para produção.

A seguir estão as principais características de Daphne:

  • Amplamente adotado em ambientes de produção
  • Referência para todas as implementações de servidor ASGI
  • Suporte para protocolos HTTP, HTTP2 e WebSocket

Trio Python

O projeto Trio visa fornecer recursos de E/S assíncrona de nível de produção: suporte para E/S paralela e simultaneidade. Este projeto também possui várias bibliotecas web e HTTP Python.

Você pode instalar a versão mais recente do Trio (junho de 2022) do PyPI.

$ pip install trio

Aqui está uma lista de bibliotecas Trio úteis para programação web com Python:

  • hypercorn: Hypercorn é um servidor ASGI que suporta HTTP
  • muffin: Muffin é um framework web ASGI para Python
  • startlette: Starlette é um framework ASGI leve
  • trio-websocket: suporte para servidor e cliente WebSocket
  • httpx: cliente HTTP para Python
  Uma folha de dicas para aplicativos de edição de vídeo para o seu iPhone

Rede torcida

Twisted é um framework para aplicações Python. Essa estrutura orientada a eventos inclui um módulo para programação web chamado twisted.web.

Você pode instalar o Twisted e os módulos associados usando pip:

$ pip install Twisted

A seguir estão as principais características do Twisted:

  • Recursos amigáveis ​​ao desenvolvedor, como teste de unidade e verificação de código estático
  • twisted.web fornece um servidor WSGI e suporte para clientes e servidores HTTP

AIOHTTP

AIOHTTP é uma biblioteca Python que fornece recursos do lado do cliente e do servidor por meio das APIs do cliente e do servidor.

Aqui está um vídeo útil explicando os recursos de programação assíncrona no lado do cliente para acelerar significativamente as solicitações às APIs.

A seguir estão os principais recursos do AIOHTTP:

  • Suporte para o servidor HTTP e a funcionalidade do cliente
  • Suporte para log para facilitar a depuração; fornece log para um cliente, servidor, soquetes da web e muito mais
  • Suporte nativo para testes através do plug-in pytest para testes: pytest-aiohttp, que está disponível como um pacote PyPI

Tornado

Tornado é outro framework web Python que suporta redes assíncronas. Nos últimos anos, houve muitas versões estáveis ​​do Tornado – a versão mais recente 6.2, foi lançada em julho de 2022. Atualmente, o Tornado suporta Python 3.7 e posterior.

Como a maioria dos pacotes nesta lista, o Tornado também pode ser instalado usando pip:

$ pip install tornado

A seguir estão as principais características do Tornado:

  • Suporte para servidor HTTP tornado.httpserver e cliente
  • Escalável e usa E/S de rede sem bloqueio
  • Adequado para aplicativos que exigem conectividade por um intervalo de tempo substancialmente maior
  • Utilitários para registro, teste de unidade e muito mais
  • Integração perfeita com serviços para autenticação

Meinheld

Meinheld é um servidor WSGI para Python. Ele usa e cria bibliotecas existentes para manipulação de eventos e processamento de solicitações HTTP.

Você pode instalar o Meinheld usando pip:

$ pip install meinheld

Algumas características do Meinheld:

  • Usa a biblioteca http-parser para lidar com solicitações HTTP recebidas
  • Builds em cima da biblioteca picoev para manipulação de eventos

Conclusão

Espero que você tenha achado útil esta lista de servidores web Python. Certifique-se de experimentá-los em seus projetos futuros. Listamos os principais recursos; para entender completamente as dependências e como elas funcionam, você terá que usá-las em seus aplicativos. 👩🏽‍💻

Se você deseja aprimorar suas habilidades em Python, considere verificar a biblioteca de tutoriais de Python do etechpt.com. Boa codificação!