9 melhores estruturas Python para criar aplicativos de pequeno a grande porte

Python é um brinquedo divertido e um lança-chamas assustador. O mesmo vale para o que você pode fazer com o Python.

Python é amado por amadores, cientistas e arquitetos.

É muito fácil de começar, tem abstrações de ordem superior e recursos de metaprogramação para construir sistemas grandes e complexos e tem um monte de bibliotecas para fazer praticamente qualquer coisa. Claro, existem limitações quando se trata de simultaneidade e digitação forte, mas você pode contorná-las.

Neste artigo, vamos dar uma olhada em alguns dos melhores frameworks Python quando se trata de construir aplicações web grandes e pequenas.

Django

o Django framework resistiu ao teste do tempo a estrutura da web para a comunidade Python. Se você agredir um desenvolvedor Python durante o sono e forçá-lo a construir um aplicativo da Web sob a mira de uma arma, ele automaticamente buscará o Django da mesma forma que um Rubyista alcançará o Rails.

E há uma boa razão para isso. Django é, como diz o slogan, “um framework web para perfeccionistas com prazos.” É o que chamamos de estrutura de “baterias inclusas” (assim como o Python é uma linguagem com baterias inclusas), que fornece todas as funcionalidades comuns prontas para uso.

Com esses recursos integrados, o Django reduz enormemente o tempo de desenvolvimento:

  • Um ORM prático e agradável, com migrações criadas e aplicadas automaticamente pelo framework.
  • Scaffolding para geração automática de painel de administração com base em seus modelos.
  • Suporte para cookies, sessões, middleware, modelos, etc.
  • Recursos de segurança como prevenção XSS, prevenção CRSF, etc., são aplicados automaticamente.
  • Funciona com praticamente todos os bancos de dados existentes (é fácil encontrar adaptadores onde não existe suporte oficial)
  • Suporte de primeira classe para dados geográficos e consultas espaciais GeoDjango

E muito, muito mais. Basta dizer que o Django é um framework web completo e amigável.

Django é para você?

Absolutamente sim.

O Django faz muito sentido para todos os casos de uso, seja prototipagem rápida ou planejamento de um aplicativo corporativo. A única aresta que você encontrará é a estrutura da estrutura. Como o Django se esforça para tornar o desenvolvimento rápido e fácil para você, ele impõe sua estrutura (um conceito chamado “convenção sobre configuração”) ao desenvolvedor, com o qual você pode não concordar. Por exemplo, se você deseja substituir o Django ORM por outra coisa (digamos, SQL Alchemy), esteja preparado para surpresas.

Interessado em se tornar um desenvolvedor full-stack com Django e Python? – Veja isso fantástico curso online.

Frasco

Embora o Django ocupe quase toda a atenção no desenvolvimento da Web em Python, Frasco é um forte candidato.

Ao contrário do Django, o Flask é um “micro-framework”, o que significa que ele se concentra em acertar algumas coisas mínimas e deixa o resto para você. Esse “o resto é com você” pode ser uma fonte de frustração ou deleite, dependendo de quais são seus objetivos. Para aqueles que sabem o que estão fazendo e desejam criar seus aplicativos da Web com amor, escolhendo os componentes de sua escolha, o Flask é uma dádiva de Deus.

Flask oferece os seguintes recursos:

  • Roteamento, modelagem, gerenciamento de sessão e outros recursos úteis.
  • Suporte total para testes de unidade
  • Uma arquitetura mínima e conectável
  • Suporte REST de primeira classe
  • Suporte para Blueprints, a abordagem única do Flask na arquitetura para pequenos aplicativos da web
  • Escolha seus pacotes para ORM, migrações, etc.
  • Estrutura de aplicativo flexível — coloque seus arquivos onde eles fizerem mais sentido para você
  • Exibição de arquivo estático
  • Compatível com WGSI

Flask é para você?

Como já foi dito, o Flask é um framework web mínimo, com tudo dividido em componentes individuais que você pode trocar. Se você estiver com pressa para criar um protótipo, gastará muito tempo tomando decisões triviais sobre banco de dados, estrutura de pastas, roteamento etc., que podem ser contraproducentes. O Flask funciona melhor quando você está em um projeto estável e sério de média a grande escala, especialmente APIs REST.

  Como redefinir o Samsung Galaxy S8 sem uma conta do Google

Garrafa

Se você pensou que a abordagem de Flask não era mínima o suficiente e que ainda gostaria de ter mais controle, diga olá para Garrafa.

Bottle se desfaz ainda mais, a ponto de a única dependência ser a biblioteca padrão do Python. Isso significa que nenhum pip instala isso ou pip instala aquilo, embora você provavelmente precise em pouco tempo. Veja por que o Bottle se destaca para algumas pessoas:

  • Implantação de arquivo único. Sim, todo o seu aplicativo reside em um único arquivo “.py”.
  • Sem dependências externas. Se você tiver a versão correta do Python instalada, estará pronto.
  • Fornece seu mecanismo de modelagem, que pode ser trocado por Jinja2, Mako ou Cheetah.
  • Suporte para formulários, cabeçalhos, cookies e uploads de arquivos.
  • Servidor web integrado, que pode ser facilmente substituído.

Garrafa é para você?

Se você estiver criando um aplicativo realmente pequeno (digamos, menos de 500 linhas de código) sem requisitos especiais, o Bottle pode fazer muito sentido para você. É uma abordagem totalmente prática para criar aplicativos da web, mas, na prática, você descobrirá que é mais prejudicado do que ajudado por Bottle. A razão é que o mundo real está sempre mudando e antes que você perceba. Novos requisitos cairão sobre sua cabeça. Nesse ponto, colocar tudo em um único arquivo se tornaria uma tarefa árdua.

Além disso, se você acha que Bottle e Flask são quase iguais, você está certo. Propostas de fundindo os dois datam de 2012, e até Armin, o criador do Flask, concorda com isso. No entanto, Marcel, o criador de Bottle, mantém uma distinção ideológica estrita por causa da abordagem de arquivo único e insiste que os dois permaneçam separados.

zope

zope é complicado de explicar, mas vou tentar. Sim, é um framework web que pode ser usado para construir aplicações grandes ou pequenas, mas isso não é tudo. Zope é mais uma plataforma que consiste em ferramentas (frameworks web incluídos) criadas sob a filosofia Zope e mantidas pela Zope Corporation.

O Zope possui vários componentes e recursos interessantes adequados para o desenvolvimento de aplicativos corporativos:

  • Uma arquitetura de registro e descoberta de componentes para configurar um aplicativo grande.
  • ZODBGenericName — (o único) banco de dados de objetos para Python para armazenar objetos nativamente.
  • Estrutura e padrões completos para sistemas de gerenciamento de conteúdo
  • Um conjunto de frameworks de aplicações web — o canônico ainda é chamado de Zope, embora vários novos frameworks (como o Grok) tenham sido construídos sobre ele.
  • Padrões fortes para desenvolvimento, lançamento e manutenção de software.

Zope é para você?

Se você procura um ambiente altamente estruturado para criar aplicativos realmente grandes, o Zope é bom. Dito isso, você também terá seu quinhão de problemas. Embora o Zope continue a evoluir, a comunidade é realmente pequena, a ponto de muitos desenvolvedores Python nem terem ouvido falar dele. Encontrar tutoriais e documentação extensa é difícil, então esteja preparado para pesquisar bastante (embora a comunidade seja realmente útil!). Além disso, os desenvolvedores Python que você encontrar podem não querer aprender Zope e “diluir” seu conjunto de habilidades.

TurboGears

TurboGears é uma estrutura altamente flexível que possui uma arquitetura genuinamente combinável. É uma estrutura dimensionável de acordo com suas necessidades e você pode usá-la para criar um aplicativo de arquivo único ou um gigante de multilocação.

  9 aplicativos para pessoas com TDAH

O TurboGears tem alguns recursos elegantes, alguns dos quais não estão presentes em frameworks populares (como Django) ou são difíceis de construir:

  • Suporte de primeira classe para vários bancos de dados
  • Transações de vários bancos de dados
  • Altamente modular — comece com um único arquivo e expanda conforme necessário
  • Um ORM poderoso (SQLAlchemy, que é mais maduro e capaz que o ORM do Django)
  • Arquitetura conectável baseada na especificação WSGI
  • Suporte integrado para fragmentação de banco de dados
  • Uma interface orientada a funções em oposição a hierarquias rígidas e profundas orientadas a objetos.

O TurboGears é para você?

Se você deseja desenvolver com alegria e deseja uma estrutura testada, madura e robusta, longe do ruído da mídia de “incrível, próxima geração” e tudo mais, o TurboGears é uma ótima opção. É altamente respeitado na comunidade e possui uma documentação completa e extensa. Claro, o TurboGears não é opinativo, o que significa que o tempo inicial de instalação e configuração pode ser maior, mas é a estrutura ideal para o desenvolvimento de aplicativos corporativos.

Web2py

Web2py começou como um projeto de hobby e foi lançado em 2007. Seus objetivos são tornar o desenvolvimento web fácil e acessível a todos.

Como resultado, o Web2py leva a abordagem de dependência zero ao extremo – não há requisitos, nada para instalar e inclui um editor baseado na Web completo para desenvolvimento, gerenciamento de banco de dados e implantação.

Você quase pode pensar nele como o Android Studio, que é mais um ambiente completo do que apenas uma estrutura. Alguns recursos interessantes que o Web2py possui são:

  • Praticamente sem curva de aprendizado.
  • Núcleo mínimo (apenas 12 objetos), que podem até ser memorizados!
  • Modelo de Python puro
  • Proteção contra XSS, CSRF e outros ataques
  • Uma API agradável e consistente

O Web2py é para você?

Web2py é uma estrutura estável e divertida, mas é difícil recomendá-la em relação a outras opções como Django, Flask, etc. Quase não há trabalhos e a história de teste de unidade não é boa. Dito isso, você pode aproveitar a API de código e a experiência geral que a estrutura oferece, especialmente se estiver criando APIs REST.

CherryPy

CherryPy é outro microframework que visa fornecer funcionalidades básicas de framework e sair rapidamente do caminho.

Embora seja comparável a outros microframeworks como o Flask, o CherryPy possui algumas diferenças:

  • Ele contém um servidor multi-thread integrado (algo que permanece na lista de desejos do Flask)
  • O servidor web (único) pode hospedar vários aplicativos!
  • Sirva seu aplicativo como um aplicativo WSGI (para fazer interface com outros aplicativos WSGI) ou um servidor HTTP simples (que tem melhor desempenho)
  • Suporte de primeira classe para criação de perfil e teste de unidade
  • Roda em PyPy (para os verdadeiros viciados em desempenho), Jython e até Android

O CherryPy faz tudo isso e, em seguida, o usual que você esperaria de uma estrutura da web.

O CherryPy é para você?

Se você está construindo principalmente serviços RESTful, o CherryPy é um concorrente muito mais sério do que o Flask. É uma estrutura de uma década que amadureceu bem e é adequada para aplicativos pequenos e grandes.

Sanic

A ascensão do Node e seu modelo de programação assíncrona deixou muitas comunidades para trás, incluindo a do Python. Em resposta, uma enxurrada de estruturas web assíncronas apareceu no radar, Sanic sendo um deles.

Sanic é fortemente inspirado por Flask, na medida em que emprestou os decoradores de rota, Blueprints e outros fundamentos da linha de anzol e chumbada. E eles não têm vergonha de admitir isso. O que a Sanic traz para a mesa, se você é um fã do Flask, é uma verdadeira E/S sem bloqueio para atender aos níveis de desempenho de um aplicativo Node. Em outras palavras, Sanic é Flask com suporte async/await!

  Diferença entre Bug, Defeito, Erro, Falha e Falha no Teste de Software

Quando comparado ao CherryPy, o Sanic tem uma incrível vantagem de desempenho (pense em como ele se sairia contra o Flask!). Confira a seguir os resultados testados por DataWeaveGenericName:

Como você pode ver, uma vez que os números de simultaneidade começam a exceder 50 por segundo, o CherryPy praticamente engasga e gera uma alta taxa de falhas.

Sanic é para você?

Embora as características de desempenho do Sanic acabem com tudo, ele pode não ser a melhor escolha para o seu próximo projeto. O principal motivo é a falta de bibliotecas assíncronas. A maior parte das ferramentas e bibliotecas Python existentes foram escritas para a versão CPython de thread único, sem premeditação para alta simultaneidade ou operações assíncronas. Se, por exemplo, seu ORM favorito não suportar operações assíncronas, todo o objetivo de usar o Sanic será derrotado.

Devido a esses motivos de maturidade e disponibilidade, não examinaremos mais estruturas assíncronas em Python.

maçom

Eu me deparei com essa estrutura há algum tempo e pensei que era um passo na direção certa. Desde então, a versão 2.0 foi lançada, e sinto que finalmente chegou a hora de dar maçom algum amor.

Simplificando, Masonite é a versão Python do Laravel (um famoso framework PHP, caso você não saiba). Por que isso importa? É importante porque o Laravel foi construído sobre os princípios do Ruby on Rails e, juntos, esses dois frameworks permitem que desenvolvedores não-Ruby experimentem o “jeito Rails” de fazer as coisas.

Os desenvolvedores Laravel (e, até certo ponto, Rails) se sentirão em casa e estarão funcionando literalmente em pouco tempo. Quando experimentei o Masonite (e enviei um ou dois problemas, incluindo um bug!), Consegui criar APIs REST sem pensar exatamente porque minha memória muscular do Laravel estava fazendo tudo.

Como uma estrutura de pilha completa com baterias incluídas, Masonite traz várias coisas interessantes para a mesa:

  • ORM de estilo de registro ativo
  • Migrações de banco de dados (que, ao contrário do Django, precisam ser criadas pelo desenvolvedor)
  • Um poderoso contêiner IoC para injeção de dependência
  • CLI própria (chamada “craft”) para andaimes e tarefas em execução
  • Suporte de primeira classe para testes de unidade

O maior “rival” do Masonite é o Django, já que a comunidade está fazendo o possível para comercializar o framework como fácil, agradável e a próxima grande novidade. Se ele vai superar o Django é algo que o tempo dirá (se você me perguntar, ele tem uma chance decente), mas para uma discussão comparando os dois, veja aqui e aqui.

Masonita é para você?

Masonite ainda é um bebê quando comparado ao Django, então não há como ele ser recomendado em vez do Django. Dito isso, se você gosta do jeito Rails (ou do jeito Laravel) de fazer as coisas, você apreciaria o que o Masonite tem a oferecer. É ideal para construir rapidamente protótipos que precisam de tudo pré-configurado e fácil de trocar.

Conclusão

Não faltam estruturas Python por aí, grandes e pequenas. Embora você possa escolher praticamente qualquer coisa para um projeto pequeno, um aplicativo corporativo tem demandas que muitos desses frameworks não podem atender. Se você me perguntar, para desenvolvimento empresarial, Django (até certo ponto), Zope e TurboGears são os que vêm à mente. E mesmo entre eles, estou inclinado para o TurboGears.

Dito isso, qualquer arquiteto que se preze pode pegar um microframework e implementar sua arquitetura. E é basicamente isso que acontece na prática, o que explica o sucesso do Flask e ideias semelhantes.

Se você é um novato, então este curso online seria útil aprender Python.

Em seguida, explore algumas das estruturas Python especializadas para criar APIs.