9 Frameworks Python Incríveis para Apps Web (de Pequenos a Grandes Projetos)

Python é, simultaneamente, uma ferramenta versátil e uma força a ser reconhecida. A sua aplicabilidade é tão vasta quanto a imaginação.

Desenvolvedores de todos os níveis, desde entusiastas a especialistas e cientistas, encontram valor no Python.

A sua curva de aprendizagem suave, aliada a abstrações complexas e recursos de metaprogramação, permite a construção de sistemas robustos. A vasta gama de bibliotecas facilita a implementação de praticamente qualquer funcionalidade. Embora existam limitações na concorrência e tipagem estática, estas podem ser contornadas.

Neste artigo, iremos analisar alguns dos frameworks Python mais notáveis para o desenvolvimento de aplicações web, de pequena a grande escala.

Django

O framework Django é um pilar na comunidade Python para desenvolvimento web. Um programador Python instintivamente escolherá o Django para a criação de aplicações web, assim como um programador Ruby o faria com o Rails.

Existe uma boa razão para isso. Django é, como o seu slogan proclama, “um framework web para perfeccionistas com prazos”. É um framework “baterias incluídas”, tal como o Python, que oferece uma variedade de funcionalidades prontas para uso.

Estas funcionalidades integradas aceleram o processo de desenvolvimento:

  • Um ORM simples e eficiente, com migrações geradas e aplicadas automaticamente pelo framework.
  • Geração automática de painel de administração a partir dos seus modelos.
  • Suporte a cookies, sessões, middleware, templates, etc.
  • Mecanismos de segurança como prevenção XSS e CSRF, são aplicados por padrão.
  • Compatibilidade com uma ampla variedade de bases de dados.
  • Suporte de excelência para dados geográficos e consultas espaciais através do GeoDjango

O Django é um framework web completo e intuitivo.

Será que o Django é para si?

Sem dúvida.

O Django é uma opção viável para diversos casos de uso, desde a prototipagem rápida até o desenvolvimento de aplicações empresariais. A única possível desvantagem é a estrutura imposta pelo framework. Para facilitar o desenvolvimento, o Django adota o conceito de “convenção sobre configuração”, que pode não agradar a todos. Por exemplo, substituir o Django ORM por outra opção, como SQL Alchemy, pode levar a desafios inesperados.

Está interessado em tornar-se um desenvolvedor full-stack com Django e Python? Consulte este curso online.

Flask

Apesar de o Django ser o centro das atenções no desenvolvimento web com Python, o Flask é um concorrente de peso.

Ao contrário do Django, o Flask é um “micro-framework”. Ele foca-se em funcionalidades essenciais, deixando as restantes decisões a cargo do utilizador. Este aspeto pode ser encarado como uma vantagem ou desvantagem, dependendo das suas necessidades. Para quem gosta de construir aplicações web com atenção ao detalhe e liberdade de escolha, o Flask é ideal.

O Flask oferece os seguintes recursos:

  • Roteamento, modelagem, gestão de sessão e outras funcionalidades importantes.
  • Suporte total para testes unitários.
  • Uma arquitetura minimalista e modular.
  • Suporte REST de primeira classe.
  • Suporte para Blueprints, a abordagem única do Flask para arquitetura em pequenas aplicações web.
  • Liberdade na escolha de pacotes para ORM, migrações, etc.
  • Estrutura de aplicação flexível, permitindo organizar os arquivos como desejar.
  • Serviço de ficheiros estáticos.
  • Compatibilidade com WGSI.

O Flask é para si?

Como mencionado, o Flask é um framework web minimalista, com componentes individuais que podem ser substituídos. Se necessitar de criar um protótipo rapidamente, poderá perder tempo com decisões sobre base de dados, estrutura de pastas, roteamento, o que poderá ser contraproducente. O Flask é ideal para projetos de média a grande escala, especialmente APIs REST.

Bottle

Se considera a abordagem do Flask ainda não ser suficientemente minimalista e deseja um controlo ainda maior, então o Bottle é para si.

O Bottle leva o conceito de minimalismo ao extremo, dependendo apenas da biblioteca padrão do Python. Isso significa que não precisa instalar dependências adicionais, apesar de provavelmente precisar delas a curto prazo. Veja por que algumas pessoas preferem o Bottle:

  • Implantação em um único ficheiro. Toda a aplicação reside em um único ficheiro “.py”.
  • Sem dependências externas. Se tiver a versão correta do Python instalada, está pronto.
  • Oferece o seu próprio motor de template, que pode ser trocado por Jinja2, Mako ou Cheetah.
  • Suporte para formulários, cabeçalhos, cookies e uploads de ficheiros.
  • Servidor web integrado, que pode ser substituído facilmente.

O Bottle é para si?

O Bottle é ideal para pequenas aplicações (com menos de 500 linhas de código) sem requisitos especiais. É uma abordagem prática para criar aplicações web, mas em cenários reais, poderá ser mais prejudicial que útil. A razão é que as necessidades do mundo real estão sempre a mudar. Novos requisitos surgirão rapidamente. Nesse ponto, ter tudo num único ficheiro torna-se um desafio.

Se considera o Bottle e o Flask semelhantes, tem razão. Existiram propostas para fundir os dois em 2012, e até Armin, o criador do Flask, concordou com isso. No entanto, Marcel, o criador do Bottle, insiste na sua distinção ideológica devido à sua abordagem de um único ficheiro.

Zope

O Zope é um framework complexo. É uma plataforma que consiste em ferramentas (incluindo frameworks web) desenvolvidas sob a filosofia Zope e mantidas pela Zope Corporation.

O Zope possui vários componentes e recursos adequados para o desenvolvimento de aplicações empresariais:

  • Uma arquitetura de registo e descoberta de componentes para a configuração de grandes aplicações.
  • ZODB — uma base de dados de objetos para Python para armazenar objetos nativamente.
  • Estrutura e padrões completos para sistemas de gestão de conteúdos.
  • Um conjunto de frameworks de aplicações web – o canónico ainda se chama Zope, embora vários novos frameworks (como o Grok) tenham sido construídos sobre ele.
  • Padrões sólidos para o desenvolvimento, lançamento e manutenção de software.

O Zope é para si?

O Zope é adequado se procura um ambiente altamente estruturado para a criação de grandes aplicações. No entanto, enfrentará alguns desafios. Apesar de o Zope continuar a evoluir, a sua comunidade é relativamente pequena, sendo que muitos programadores Python nunca ouviram falar dele. Encontrar tutoriais e documentação extensiva é difícil, portanto, prepare-se para pesquisar. Além disso, os programadores Python podem não ter interesse em aprender Zope e “diluir” o seu conjunto de habilidades.

TurboGears

O TurboGears é um framework altamente flexível com uma arquitetura modular. É um framework dimensionável que pode ser usado para criar aplicações de um único ficheiro ou aplicações de multilocação.

O TurboGears oferece vários recursos elegantes:

  • Suporte de primeira classe para diversas bases de dados.
  • Transações em várias bases de dados.
  • Altamente modular – comece com um único ficheiro e expanda conforme necessário.
  • Um ORM poderoso (SQLAlchemy, mais maduro e capaz do que o ORM do Django).
  • Arquitetura modular baseada na especificação WSGI.
  • Suporte integrado para particionamento de bases de dados.
  • Uma interface orientada a funções em vez de hierarquias orientadas a objetos rígidas.

O TurboGears é para si?

Se deseja desenvolver com satisfação e procura um framework robusto e bem estabelecido, o TurboGears é uma excelente opção. É altamente respeitado na comunidade e possui uma documentação abrangente. No entanto, o tempo de configuração inicial pode ser maior, uma vez que não é um framework opinativo. É ideal para o desenvolvimento de aplicações empresariais.

Web2py

O Web2py começou como um projeto amador em 2007. O seu objetivo é tornar o desenvolvimento web acessível a todos.

O Web2py leva a abordagem de zero dependências ao extremo – não há requisitos, nada para instalar, e inclui um editor web completo para desenvolvimento, gestão de base de dados e implementação.

Pode considerá-lo como o Android Studio, mais um ambiente completo do que apenas um framework. Algumas funcionalidades interessantes do Web2py são:

  • Curva de aprendizagem suave.
  • Núcleo minimalista (apenas 12 objetos).
  • Modelo Python puro.
  • Proteção contra XSS, CSRF e outros ataques.
  • Uma API agradável e consistente.

O Web2py é para si?

O Web2py é um framework estável e divertido, mas é difícil recomendá-lo em comparação com outras opções como Django ou Flask. Existem poucas oportunidades de trabalho e o seu sistema de testes unitários não é ideal. No entanto, poderá aproveitar a sua API e experiência geral, especialmente ao criar APIs REST.

CherryPy

O CherryPy é outro micro-framework que se propõe a fornecer funcionalidades essenciais e sair do caminho.

Embora seja semelhante a outros micro-frameworks como o Flask, o CherryPy tem algumas diferenças:

  • Contém um servidor multi-thread integrado (algo que o Flask ainda não oferece).
  • O servidor web pode hospedar várias aplicações!
  • Serve a sua aplicação como uma aplicação WSGI (para interagir com outras aplicações WSGI) ou um servidor HTTP simples.
  • Suporte de excelência para criação de perfis e testes unitários.
  • Funciona em PyPy, Jython e até Android.

O CherryPy faz tudo isto, e mais funcionalidades comuns de um framework web.

O CherryPy é para si?

O CherryPy é um concorrente sério do Flask para a construção de serviços RESTful. É um framework estabelecido, adequado para aplicações pequenas e grandes.

Sanic

A popularidade do Node e o seu modelo de programação assíncrono levaram ao surgimento de frameworks assíncronos, incluindo o Sanic.

O Sanic é fortemente inspirado no Flask, utilizando os mesmos decoradores de rota e Blueprints. O Sanic oferece E/S sem bloqueio para atingir o desempenho de uma aplicação Node. Em outras palavras, o Sanic é o Flask com suporte async/await!

Quando comparado com o CherryPy, o Sanic demonstra uma vantagem de desempenho significativa (imagine como se compara ao Flask!). Veja os resultados de um teste realizado pela DataWeave:

Como se pode observar, o CherryPy começa a falhar quando o número de conexões simultâneas excede 50 por segundo.

O Sanic é para si?

Apesar do excelente desempenho do Sanic, pode não ser a melhor escolha para o seu próximo projeto. A principal razão é a falta de bibliotecas assíncronas. A maioria das ferramentas e bibliotecas Python existentes foram escritas para CPython, sem previsão para alta simultaneidade ou operações assíncronas. Se o seu ORM favorito não suportar operações assíncronas, o objetivo de utilizar o Sanic é anulado.

Por estas razões, não iremos analisar outros frameworks assíncronos em Python.

Masonite

O Masonite é a versão Python do Laravel (um famoso framework PHP). Por que isto importa? Porque o Laravel foi construído sobre os princípios do Ruby on Rails, permitindo que programadores não-Ruby experimentem o “estilo Rails” de fazer as coisas.

Os programadores Laravel (e, em certa medida, Rails) sentir-se-ão confortáveis e rapidamente produtivos. Ao experimentar o Masonite, foi possível criar APIs REST sem dificuldades, devido à familiaridade com o Laravel.

Como um framework de pilha completa com baterias incluídas, o Masonite oferece várias funcionalidades interessantes:

  • ORM ao estilo de registo ativo.
  • Migrações de base de dados (que, ao contrário do Django, precisam ser criadas pelo programador).
  • Um poderoso contêiner IoC para injeção de dependência.
  • CLI própria (“craft”) para scaffolding e execução de tarefas.
  • Suporte de excelência para testes unitários.

O maior “rival” do Masonite é o Django, sendo que a comunidade promove o framework como fácil, intuitivo e inovador. Se irá ultrapassar o Django é algo que só o tempo dirá, mas para uma discussão comparando os dois, consulte aqui e aqui.

O Masonite é para si?

O Masonite é um framework relativamente novo em comparação com o Django, sendo difícil recomendá-lo em vez deste. No entanto, se apreciar a abordagem do Rails (ou Laravel), certamente gostará do que o Masonite tem para oferecer. É ideal para criar protótipos rapidamente, com tudo pré-configurado e fácil de substituir.

Conclusão

Existe uma grande variedade de frameworks Python, de pequena a grande escala. Embora possa escolher qualquer um para um pequeno projeto, as aplicações empresariais têm requisitos específicos que nem todos os frameworks conseguem atender. Para o desenvolvimento empresarial, o Django, Zope e TurboGears são as melhores opções. Particularmente, recomendo o TurboGears.

No entanto, qualquer arquiteto qualificado pode pegar num micro-framework e implementar a sua própria arquitetura. E é isto que acontece na prática, o que explica o sucesso do Flask.

Se é um iniciante, este curso online será útil para aprender Python.

Em seguida, explore alguns dos frameworks Python especializados na criação de APIs.