Bom dia!
Estava meio sumido do Blog, mas a Nuccitec tem consumido praticamente todo meu tempo :).
O fato é que agora estou me aprofundando para aprender Python, influenciado pelo Google App Engine(GAE), infra da qual gosto muito. E para aprender, nada melhor que logo fazer framework...rs.
Quando você lê os primeiro passos no GAE voltado para o Python, acaba se decepcionando com o webapp, pequeno framework web que o Google fez. A necessidade de ficar mapeando URL´s para handlers é um saco. Inclusive na própria documentação se comenta pra usar outros frameworks.
Conversando sobre isso com meu amigo Reginaldo, ele me deu a idéia de fazer um REST seguindo uma convenção para executar os handlers, eliminando a tarefa braçal, chata, e suscetível a erros de ficar mapeando URL´s para Handlers. Assim nasceu o Webapp-CE, ou Webapp Convetion Engine.
A idéia básica da convenção é parecida com existente no VRaptor, framework Java para WEB, que também é brasileiro. Suponha que você tem um handler br.com.SeuHandler que possua o método executar. A convenção consiste em mapear automaticamente esse método para a URL /br/com/SeuHandler/executar. E o que vir depois desse padrão é passado como parâmetro para o método executar.
O framework também faz o inverso, ou seja, você passa o método e ele te devolve a URL. Isso torna o processo de mapeamento automático e se você mudar o nome do Handler ou até mesmo movê-lo para outro diretório, a URL muda de forma automática.
O legal de tudo isso foi ter feito o framework em duas madrugadas. Ele possui apenas dois scripts. Mas no fonte do projeto existem também os testes unitários.
A experiência serviu para me indicar que efetivamente o Python te da uma liberdade imensa e é uma tremenda ferramenta. A introspecção dele é excelente, bem como a parte de testes unitários. Cada vez mais tenho menos saudades do Java...rs. Em breve devo lançar o curso Python Básico e Python para GAE na Nuccitec.
Espero que curtam o projeto.
Renzo Nuccitelli
2 comentários:
Gostei da ideia. Já usei solucoes semelhantes no Google App Engine.
Algumas coisas pra melhorar:
1) BaseException é uma exception built-in, eu mudaria o nome. Acho que vc nem precisa criar uma exception padrão, dá pra só herdar de Exception.
2) Siga o PEP-8: http://www.python.org/dev/peps/pep-0008/
3) O ce-handler.py cria a application com debug=True. Isso precisa ser configurável.
Fala Iuri. Vlw pelas dicas. Então existem soluções parecidas? Dei uma procurada e não tinha encontrado. Mas vlw para começar no mundo do Python. De qualquer forma, envie uns links por favor, pra eu dar uma olhada.
Quanto às suas dicas:
1) Nem lanço a exceção, só subclasses delas. Mas vou mudar para não dar confusão.
2) Pois é, fiquei meio perdido mesmo. Vou dar uma olhada no material
3) Eu tinha pensado nisso. Mas é tão pequeno o arquivo que achei mais fácil alterar o parâmetro no próprio arquivo. Vou ver se coloco esse detalhe na própria documentação
Postar um comentário