Programando Python para a Web

AGRADEÇA AO AUTOR COMPARTILHE!

Olá pessoal…

Vamos falar hoje um pouco sobre Python, Apache, CGI e frameworks Python?!

CGI x MOD_PYTHON x MOD_WSGI

Programadores PHP (estou incluso nesta lista) podem “estranhar” a forma como o Apache trata requisições Python, pois praticamente todo servidor de hospedagem web já vem configurado com o mod_php por padrão. Isto significa que basta jogar os arquivos em uma pasta pública e deixar que o Apache faça todo o resto.

De certa forma, isso ocorre também quando o servidor Apache está devidamente configurado com o mod_python, mas não é um caso tão comum. Pode-se também usar “aquela maneira tradicional” de executar CGI adicionando no cabeçalho do script (no caso do Python #!/usr/bin/python) o endereço do interpretador da linguagem em questão.

A forma que venho utilizando é do FastCGI com mod_wsgi. Este módulo tem por principal objetivo hospedar qualquer aplicação (Python) que suporte a interface WSGI, o que facilita muito o deploy de aplicações construídas em frameworks como Django, Pylons, Turbogears, etc.

wsgi-esquemaO WSGI (Web Server Gateway Interface) é uma especificação de comunicação entre aplicações e servidores web, um padrão que garante que uma aplicação Pylons (por exemplo) execute em qualquer servidor web (que obviamente suporte o padrão)… no caso do deploy de uma aplicação Django, os arquivos .py não ficam diretamente acessíveis no public_html do Apache. Deve-se escrever um .htaccess que faça a requisição passar pelo WSGI, acionando a interface WSGI da framework e obtendo uma resposta.

Isso também facilita para que as frameworks tenham maior controle sobre as url’s. Em Django você é obrigado a escrevê-las e apontá-las para as suas determinadas views.

Levei um tempo para me acostumar e entender essa forma de publicar meus projetos, mas garanto que você se sente realmente no controle da sua hospedagem e das requisições/respostas.

Segue alguns links interessantes sobre o assunto de deploy (embora a maioria dos links sejam sobre Django, entende-se bem o conceito do deploy mesmo para outras frameworks):

PRINCIPAIS FRAMEWORKS WEB

Programar puramente Python para a web não é lá muito bonito. Mas com o auxílio de uma framework (que em Python cria um “foco” de escrita para determinado ambiente) esta tarefa pode tornar-se muito divertida, rápida e eficiente. Abaixo segue uma pequena lista das principais frameworks Python para web que eu conheço:

- Django (http://www.djangobrasil.com.br)django-logo-negative1

O Django foi a framework que “fisgou meu coração”. Utiliza o padrão MVC, excelente para desenvolvimento rápido, limpo e fácil… muito fácil. Possui mapeamento objeto-relacional (ORM), interface administrativa automática, url’s elegantes, sistema de templates (usado pelo Google App Engine), internacionalização, formulários (escreva seus forms em Python), um servidor integrado para o ambiente de produção, middlewares para tratamento de requisições e respostas e um templage_tag para replicação de “Lorem Ipsum” que é uma maravilha. Sua documentação é muito boa e sua comunidade muito apaixonada.

- Turbogears (http://oturbogears.org)turbogears-logo

Não tive muito contato com o Turbogears, mas com certeza é uma framework muito cultuada pelos Pythonicos. Também utiliza ORM, um servidor web embutido (CherryPy), usa o sistema de apresentação Cheetah e utiliza por padrão a framework javascript Mochkit para a camada de interação (JSON). Vem ganhando muito respeito por tratar-se de uma “megaframework” feita de tecnologias já existentes… só não me aprofundei mais nela por achar o Django um pouco mais fácil de se aprender…

- Spyce (http://spyce.sourceforge.net/)spyce-logo

Essa aqui eu conhecí bem depois de começar com Django. Ela ganha destaque por utilizar o conceito de PSP (Python Server Pages) do mod_python, programadores PHP gostarão desta idéia pois trata-se do Python em tags, como no PHP (<? ?>). Também possui um servidor embutido e aparentemente está em rápida expansão.

- Pylons (http://pylonshq.com/)pylons-logo

Pylons é a próxima framework Python para a web que eu pretendo estudar. Trabalha com ORM e com vários sistemas de templates (Mako, Genshi, ou qualquer outro) além de ter o FormAlchemy, um prato cheio para construção de formulários. Até onde sei é a framework que melhor suporta WSGI e é totalmente “desmontável”, permitindo a customização da estrutura de pacotes para determinados projetos. Ah! O site oficial do projeto é muito bonito e sua documentação bastante acessível…

- CherryPy (http://www.cherrypy.org/)cherrypy-logo

Talvez a framework mais “Pythonica”, trata-se de uma framework que age diretamente sobre o protocolo HTTP. Isto resulta em códigos objetivos… sinceramente, fiquei bem interessado depois de conhecer a forma de escrita do CherryPy (e passei até a entender melhor essa história de cliente, servidor, gateway interface, etc.). Alguns podem até ficar meio confusos… vai depender do ponto de vista.

- Zope (http://www.tchezope.org/)zope-logo

Você vai ouvir muito falar do Zope ainda… principalmente da sua aplicação de maior sucesso, o Plone. Explicando: o Plone é um CMS escrito em Zope… o mais completo CMS que já usei até hoje (e talvez até mesmo o mais complexo)… já o Zope, em miúdos é um servidor web, servidor de aplicações, banco de dados orientado a objetos, sistema de publicação de objetos e também possui uma impressionante framework e um dos mais práticos sistemas de templates (ZPT – Zope Page Templates). É uma tecnologia fenomenal, você vai se sentir totalmente submerso em um novo mundo que o Zope cria diante dos seus olhos (quase entrei em parafuso a primeira vez que lidei com ele).

Para se ter uma idéia, você o administra e desenvolve para/com ele utilizando apenas a sua interface web (pode-se utilizar outros recursos como FTP, Webdav, etc.).

Enfim… apresentei para vocês um pouquinho mais de Python em conjunto com o ambiente web. A partir deste post eu dou por encerrada a minha fase “conceitual” aqui no Profissionais TI. Por utilizar ferramentas que não são padrões de mercado na região onde atuo, me sentí na obrigação de fazer todas estas introduções… aguardem por posts mais práticos.

E você?! Tem alguma framework que usa que não foi comentada? Alguma sugestão ou correção para este artigo? Não deixe de comentar…

Até a próxima…

AGRADEÇA AO AUTOR COMPARTILHE!

Klaus Peter Laube

Mais artigos deste autor »

Tecnólogo em Análise e Desenvolvimento de Sistemas pelo Centro Universitário de Jaraguá do Sul (UNERJ). Desenvolvedor Web de longa data, apaixonado por Python e defensor dos padrões Web. Escreve quando pode no http://www.klauslaube.com.br.


15 Comentários

Klaus Peter Laube
2

Legal… o Lenny promete!
Gosto quando há a liberdade de escolher qual framework (e versão) você irá utilizar em uma hospedagem sem necessitar intervenção dos técnicos. O MOD_WSGI com certeza facilita muito!
Obrigado pelo comentário…

jonnathan
3

por favor gostaria que alguem me ajudasse a configurar o modulo python!!!
ja to a 2 dias tentando e nao consigo!!!!!

Klaus Peter Laube
4

@Jonnathan:
Desculpe a demora da resposta… estou com problemas com a internet por aqui.
Bom, você tem que ser um pouco mais específico cara… que servidor você tá usando? Qual é o problema que está apresentando?

Dá uma visitada no grupo de discussão do Django (http://groups.google.com.br/group/django-brasil?pli=1). Acho que o Google responde também (http://www.google.com.br/search?q=configurando+mod_python&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:pt-BR:official&client=firefox-a).

alex vital
8

Boa tarde,

Estou tendo dificuldade em utilizar o mod_wsgi, django e apache, construi o projeto do aprendendo Django no planeta terra, diretamente na maquina roda normal mas quando vou fazer o deploy utilizando o apache/mod_wsgi esta ocorrendo UM ERRO DE IMPORTAÇÃO DA BIBLIOTECA os no módulo deploy.wsgi

Instalei o Apache/2.2.19 (Win64), mod_wsgi/3.4 e Python/2.6.

Procurei no Google e tem vários artigos falando a respeito desse problema mas tive dificuldade para entender a solução.Alguém tem alguma dica de como eu posso solucionar o problema da importação da biblioteca os no deploy.wsgi????

Valeu.

alex otero
9

Oi Bruno,
Estou tendo dificuldade em utilizar o mod_wsgi, django e apache, construi o projeto do aprendendo Django no planeta terra, diretamente na maquina roda normal mas quando vou fazer o deploy utilizando o apache/mod_wsgi esta ocorrendo UM ERRO DE IMPORTAÇÃO DA BIBLIOTECA os no módulo deploy.wsgi

Instalei o Apache/2.2.19 (Win64), mod_wsgi/3.4 e Python/2.6.

Procurei no Google e tem vários artigos falando a respeito desse problema mas tive dificuldade para entender a solução.Alguém tem alguma dica de como eu posso solucionar o problema da importação da biblioteca os no deploy.wsgi????

Obrigado

Deixe seu comentário

Seu endereço de e-mail não será publicado. Campos com * são obrigatórios!

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">