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!
últimas postagens
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.
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.
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
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!