|
Re: Link para Fotoblog e Python
|
Pedro marques
|
Jan 09, 2005 19:58 PST
|
Hmmm mto interessante isso Jonas eu n=E3o consegui instalar o mod_python
aqui no meu winXp, ele n=E3o reconhece o python, mais instalei o
apache2triad com o mod_python aqui e consegui rodar script com output
direto na linguagem ".py" mais n=E3o consigo rodar o seu c=F3digo psp por
exemplo:
<%
for i in range(10):
%>
<%=3D i %><br />
<%
#
%>
ele escreve o c=F3digo em vez de executa - lo, qual a seria solu=E7=E3o par=
a
esse problema? como ficaria o httpd.conf?!
Obrigado!
On Fri, 31 Dec 2004 17:16:00 -0200, Jonas Galvez <jonasg-@gmail.com> wr=
ote:
=E3o
| | | | web. Python atualmente =E9 mais frequentemente usado em frameworks
inteiros (por exemplo, a engine de busca do Google =E9 escrita em
Python), offline e online, em aplica=E7=F5es desktop (interfaces
gr=E1ficas mesmo) e integra=E7=E3o com sistemas legados (por exemplo,
m=F3dulos que utilizam libraries em C etc).
Por isso, at=E9 hoje nunca houve um esfor=E7o centralizado e objetivo
da Python Software Foundation em criar um framework web para
Python padronizado. O resultado foi o surgimento uma enorme
pluralidade de op=E7=F5es, e me custou algum tempo de testes e
pesquisas para achar a solu=E7=E3o mais confi=E1vel e escal=E1vel.
Existem =F3timos frameworks web para Python, estando entre os mais
famosos o Twisted Matrix (twistedmatrix.com), WebWare
(webware.sourceforge.net) e mod_python (modpython.org). Muito
comumente, Python tamb=E9m ainda =E9 usado em CGI puro.
O problema de CGI =E9 que o interpretador da linguagem usada =E9
reiniciado toda vez que um request =E9 realizado. Ambos WebWare e
Twisted exigem o uso de servidores seperados (o que na verdade =E9 algo
muito bom, por=E9m excessivamente trabalhoso para a maioria dos casos).
A op=E7=E3o que me restou foi mod_python.
mod_python trabalha com Apache, e funciona EXATAMENTE como PHP: o
interpretador =E9 carregado e executando em conjunto com o pr=F3prio
servidor Apache, na forma de um m=F3dulo externo. Entretanto, h=E1 um
n=FAmero de op=E7=F5es de configura=E7=E3o adicionais. O uso adequado d=
|
|
e
| | | | mod_python requer a cria=E7=E3o de "handlers" de request, que
processam todas as chamadas que ocorrem em um determinado
diret=F3rio. Esta metodologia =E9 de certa forma copiada do mod_perl,
e possibilita (e incentiva) um modelo de desenvolvimento MUITO bem
organizado, por=E9m um pouco complicado e talvez n=E3o muito natural
para quem est=E1 acostumado a fazer saladinhas de c=F3digo e tags com
a extens=E3o .php, jogar num diret=F3rio, e rodar.
mod_python tem dois handles padr=E3o muito =FAteis: cgihandler e psp. O
handler cgihandler permite que scripts Python sejam executados de
forma num ambiente CGI, por=E9m sem a lentid=E3o de CGI. Cada handler,
quando ativado, vale para o diret=F3rio atual (em que ele =E9 ativado) =
|
|
e
| | | | todos os subordinados. Em um dos VirtualHosts do meu servidor, h=E1 as
seguintes linhas de configura=E7=E3o:
<VirtualHost sharedobject.org>
# ...
AddHandler mod_python .py
PythonHandler mod_python.cgihandler
PythonDebug On
# ...
</VirtualHost>
Com isso, posso jogar um arquivo de script .py em qualquer diret=F3rio
do site, e ele ser=E1 executado e processado pelo handler cgihandler. O
handler psp (Python Server Pages) permite o uso de uma sintaxe
PHP-like para output de dados, por exemplo:
<%
for i in range(10):
%>
<%=3D i %><br />
<%
#
%>
http://sharedobject.org/psptest/test.psp
No caso, a se=E7=E3o de configura=E7=E3o =E9 a seguinte:
<Location /psptest>
AddHandler mod_python .psp
PythonHandler mod_python.psp
PythonDebug On
</Location>
O problema de Python Server Pages =E9 que o escopo de declara=E7=F5es n=
|
|
o
| | | | Python =E9 definido pela tabula=E7=E3o, e isso n=E3o se adequada muito =
|
|
bem =E0
| | | | sintaxe com <% e %>. =C9 sempre necess=E1rio inserir um trecho de c=F3d=
|
|
igo
| | | | ap=F3s o in=EDcio bloco, para que o compilador saiba que o mesmo j=E1
fechado. Al=E9m disso, eu acho esse esquema de combina=E7=E3o de c=F3di=
|
|
go e
| | | | output um tanto retr=F3grado e mal-organizado, e tira muito da boa
organiza=E7=E3o que Python propicia.
Algo bom, entretanto, =E9 que PSP =E9 consideravelmente mais r=E1pido q=
|
|
ue
| | | | PHP, por exemplo, porque h=E1 a pr=E9-compila=E7=E3o do c=F3digo, de fo=
|
|
rma
| | | | similar ao que ocorre no JSP. Na primeira vez que o c=F3digo =E9
executado, um bytecode =E9 gerado, que =E9 usado posteriormente. Caso h=
|
|
aja
| | | | altera=E7=F5es no arquivo de script, o bytecode =E9 atualizado
automaticamente.
Nas minhas primeiras aplica=E7=F5es com mod_python, usei PSP sem
problemas, mas agora estou usando Cheetah para gerar output de dados.
Cheetah (www.cheetahtemplate.org) =E9 uma engine de templating para
Python similar ao Velocity do Java. A sintaxe =E9 MUITO mais simples e
pr=E1tica, e incentiva maior organiza=E7=E3o (em outras palavras, maior
separa=E7=E3o de l=F3gica e apresenta=E7=E3o).
A sintaxe do Cheetah =E9 bem poderosa, por=E9m o ideal =E9 que
utilize-se somente recursos que definem a apresenta=E7=E3o do output,
deixando absolutamente toda a l=F3gica para um script Python puro. O
exemplo do loop, em Cheetah, seria parecido com o seguinte:
# for $i in $lista
$i<br />
# end for
No Python que controla a l=F3gica, eu teria o script que gera a array
lista e passa para o template. Enfim, eu considero um esquema muito
pr=E1tico e produtivo.
Resumindo, minha recomenda=E7=E3o =E9 mod_python + Cheetah. Mas n=E3o p=
|
|
osso
| | | | deixar de mencionar um outro sistema que est=E1 em desenvolvimento, que
se integra muito bem ao Twisted mas tamb=E9m pode ser usado com
mod_python. Trata-se do Nevow (www.nevow.com).
Eu diria que Nevow =E9 a metodologia perfeita de desenvolvimento web.
Seus recursos s=E3o impressionantes, e a forma como output de dados =E9
gerado dinamicamente a partir de classes =E9 de deixar o quiexo ca=EDdo=
|
|
.
| | | | Vale a pena dar uma olhada nesta introdu=E7=E3o:
http://nevow.com/releases/0.3.0/nevow-intro.html
Por =FAltimo, se o servidor usa alguma distro Linux com sistema de
packages, como Redhat ou Debian, =E9 muito f=E1cil instalar mod_python
no Apache, apesar de que as vers=F5es mais recentes do Python ainda
n=E3o est=E3o dispon=EDveis em algumas distros. Eu estou usando Debian
Sarge (Testing) no meu servidor, que j=E1 inclui Apache 2, Python
2.3.4 e mod_python 3.1 (o mod_python =E9 dependente do Python). Tamb=E9=
|
|
m
| | | | estou usando uma backport do PHP 5. No total, a vari=E1vel
SERVER_SOFTWARE do sistema =E9 a seguinte:
Apache/2.0.52 (Debian GNU/Linux) mod_perl/1.99_14 Perl/v5.8.4
mod_python/3.1.3 Python/2.3.4 PHP/5.0.3-0.1
Uma verdadeira orgia de tecnologias :D
--
http://jonasgalvez.com
http://codeazur.com.br
|
|
|
|
 |
|