Paulo Henrique Rodrigues Pinheiro

Um blog sobre programação para programadores!


Usando Flask para desenvolver sistemas WEB com Python

Um relato sobre minha volta para o Python e a difícil decisão na escolha de um framework. O Escolhido foi o Flask.

Flask

Em busca do Framework perfeito

Estando eu em busca do framework perfeito para desenvolvimento WEB em Python, passei por várias alternativas, testando algumas e lendo sobre outras.

Não quero avaliar as opções e justificar minha escolha, apenas registrar e compartilhar minhas impressões.

Feliz com Perl

Estava eu muito feliz programando em Perl, e me vi travando em cada nova tarefa no desenvolvimento de uma aplicação WEB, não por conta do Perl, mas do framework escolhido. Muita documentação para ler, pequenas mudanças pouco documentadas entre versões, mas que quebram tudo. Uma ótima oportunidade para contribuir em projetos OpenSource, mas antes de contribuir preciso ter alguns sistemas funcionando.

Encontrei opções, segui os tutoriais rápidos de cada uma e encontrei ótimos sistemas. Há o Catalyst, consolidado, grande, estável, praticamente a ferramenta oficial Perl. Eu ouso compará-lo com o que é o Django para o ecossistema Python.

E há duas opções muito ágeis, eficientes e rápidas para iniciar e colocar aplicações no ar: Mojolicious e Dancer.

Eu realmente gostei do Mojolicious, e nele investi meu tempo.

Voltando para o Python

Em minhas pesquisas comecei a rever as opções para Python. Uma velha paixão, o CherryPy foi a primeira tentativa. Depois de perder muito tempo em busca do gerenciamento perfeito de sessões, deixei ele adormecido.

Eu gosto do jeito CherryPy de ser, e tudo que aprendi com Flask deve me ajudar a usá-lo melhor e mais eficientemente, em outros projetos. Mas eu precisava escrever um sistema com banco de dados e muitos formulários, e são muitas as opções para fazer isso.

Para alguém extremamente disperso como eu, isso é um grande problema.

O Django é uma opção, mas como eu precisava de algo que me atendesse tanto com MongoDB quanto com SQLite, descartei. Há o TurboGears, que atende esse requisito, mas nos primeiros passos dos tutoriais deparei-me com erros.

Simpatizei muito com o Bootle, mas não curti aquela história de "não cuidamos de sessões":

http://bottlepy.org/docs/dev/recipes.html#keeping-track-of-sessions.

O Vencedor

É o Flask. A documentação é muito extensa e coerente na forma entre as diversas extensões. Mas uma coisa que me irritou e dificultou muito, é a documentação focada em demonstrar que a coisa funciona. É uma receita do tipo "uma aplicação mínima usando este módulo...".

Dificilmente essa "receita" se aplica como tal ao mundo real, especialmente quando se está iniciando e tentando juntar as peças.

Mas fica na cabeça que a extensão funciona e é fácil de usar.

Felizmente há um excelente livro que cobre essa grave falha na documentação, e que apresenta uma proposta de organização do código para grandes aplicações (grandes no sentido de "não é apenas uma demonstração").

O autor tem uma série de artigos sobre como usar o Flask. E neste link as referências do livro.

Sem estas duas referências, o trabalho é árduo. Mas, independente do caminho, ao se ganhar certa autonomia, fica tudo muito divertido.

Além da documentação, dos artigos e do livro, há amplo registro de problemas e soluções. Por exemplo, aqui estão alguns dos links que me trouxeram soluções:

Concluindo

A busca não acabou, e claro, o framework perfeito só encontrarei depois que desenvolvê-lo.

Alguém se habilita?

Referências

termos genéricos
linguagens de programação
frameworks perl
frameworks python
bancos de dados