mod_python

nocreyente nocreyentes en terra.es
Jue Ene 19 09:06:36 CET 2006


Buenas:

En esto de la programación, cada uno tiene sus manias. Yo soy muy 
maniatico en los siguientes puntos:
- No puedo ver una ruta a una maquina, base de datos, ... en el codigo. 
Todas tienen que estar en fichero de configuración (aunque este sea un 
.py como la configuracion del MoinMoin). Configuración separada de 
codigo.
- Odio ver el php, jsp, asp, psp, ... donde se mezcla codigo con 
presentación. Si veo un acceso a base de datos mezclado con html, me 
pongo malito. Si los datos de conexion a base de datos estan en el 
mismo fichero, tengo que irme a casa y emborracharme para olvidarlo. 
Necesito un sistema de plantillas que pueda ejecutar la minima cantidad 
de codigo pasible para ser feliz.
- Me resulta deseable que en las URLs no tenga información de la 
plataforma que se ejecuta. No por no decirle a nadie que uso, sino por 
no tener que casarme con esa plataforma. Ejemplo:
	- http://mihost/noticias.php?y=2006&m=1&d=1&n=3 es una URL que apesta
	- http://mihost/noticias/2006/1/1/3 es una URL que esta bien. Se puede 
hacer con J2EE, mod_python, perl o lo que quieras.
- Me gusta que el acceso a datos este separado de la logica que los 
utiliza. Usar un motor de base de datos u otros solo implica cambios en 
los modulos de acceso a datos. Eso esta bien para independizarte de la 
base de datos que se usa, lo que permite tener desarrollos más 
flexibles o que si tienes que cambiar de base de datos, esto no suponga 
un trauma.
- Tengo ademas otras manias que no vienen a cuento.

Es por eso, que para mi y mis manias, la forma de hacer las cosas es 
una de las siguientes:

mod_python:
==========
Te tienes que currar (no se hasta que punto te servira el 
PublisherHandler 
(http://www.modpython.org/live/current/doc-html/hand-pub.html) un 
handler que haga de dispatcher hacia tu logica de negocio, y luego 
llame a una plantilla para la presentación.
Elige un sistema de plantillas chulo. Kid, simpleTal, cheetah, ... A 
gustos colores.
Elige un sistema para guardar la configuración. Puedes usar la 
configuracion de Apache, un fichero que tu uses con cualquiera de las 
librerias de configuración que hay en python o importar un modulo de 
python en el que solo guardas datos de configuración (creo que esta es 
la opcion menos limpia, pero por lo menos tienes separada la 
configuracion).
Separa las clases que acceden a datos, o incluso usa librerias como 
SQLObject para hacerte la vida más facil. Es un ORB bastante facil de 
usar.

cherrypy:
=======
Este no lo conozco muy a fondo. No se hasta donde es capaz de llegar, 
pero se que tiene un modulo chulo de configuración y un controlador 
bastante majete.
Lo que se de este framework, lo se porque otros framewors lo usan para 
hacer el controlador.

turbogears:
=========
Si una imagen vale mas que mil palabras, un video valdra mas que todos 
los libros de la biblioteca de tu barrio ;-)
http://www.turbogears.com/docs/wiki20/20MinuteWiki.mov
El video esta en ingles, pero con ver las imagenes sobra para quedarse 
boquiabierto. Por si no te anda el video:
http://www.turbogears.com/docs/wiki20/index.html
Con un framework de estos se pueden hacer cosas muy rapiditas. La 
version 0.8 (la estable actual) es poco más que el pegamento entre 
librerias de python de uso comun. Usa cherrypy (configuracion y 
controlador), formencode (validaciones), sqlobject (acceso a BD), kid 
(plantillas) y no se si alguna más.

django:
======
http://www.djangoproject.com/
Si miras la pagina principal veras que tratan los siguientes apartados 
de entrada:
- Object-relational mapper (uno de mis requisitos)
- Automatic admin interface (esta bien, auque esto es lo de menos)
- Elegant URL design (otro de mis requisitos)
- Template system (otro de mis requisitos)
- Cache system (detalle de calidad. Aunque SQLObject o cheetah ya 
tienen los suyos propios, lo mismo que Apache)
- Internationalization _("el gran olvidado") (El simbolo "_" lo puse a 
posta)

chotis2ee:
========
Esto es una prueba de concepto que me puse hacer y al final no termine. 
Despues de ver todo lo que se necesitaba para Jota2ee, me puse a hacer 
algo equivalente en python para comparar. Quiza te pueda servir de algo 
algunas de las librerias que investigue:
- Servlet + JSP -> mod_python con PSP
- Auntentificacion -> currarme un auth_handler en mod_python y como 
detalle de calidad soporte de Liberty Alliance a traves de souk 
(http://lasso.entrouvert.org/souk/)
- EJB -> pyro (http://pyro.sourceforge.net/). Que tiene para hacer 
invocaciones remotas y cola de mensajes.
- EJB de entidad, content managed -> hacer algo con SQLObject, 
extendiendo ademas de pyro.
- Configuracion XML -> estuve dudando entre usar YAML (no me termino de 
convencer) o algo más simple. Aquí dude bastante.
- .... -> ....
Pero seamos serios, ¿quien quiere copiar a Java?


Realmente te recomiendo TurboGears, que es lo que me ha dado por usar 
ultimamente. Agradezco a Chema haber hablado de el en la lista ;-)

Espero que este post tan largo (me enrollo mas que las persianas) te 
sirva para ahorrarte parte del tiempo que he "perdido" mirando 
librerias en python.

Un saludo:
Javi

El 18/01/2006, a las 23:09, FERNANDO VILLARROEL escribió:

> Hola he estado trabajando con python y Asterisk
> (central telefonica) usando la libreria pyst, de
> momento todo bien.
>
> EL asunto es que ahora hay que crear una plataforma
> web para dar acceso a clientes a consultar sus
> traficos, tarifas, etc.
>
> Hice algo con PHP y estoy tan acostumbrado a Python
> que lo encuentro horrible.
>
> Revisando he visto algo PSP, pero no se como chequear
> si apache tiene cargado el modulo Python, revisando en
> la libreria modules de Apache aparece descomentado el
> modulo Python por lo que me imagino que si esta
> cargado.
>
> Corri un script php con la funcion phpinfo() pero no
> veo nada que diga Python.
>
> Ahora bien se ha discutido bastante en esta lista como
> en otras lo importante que resulta separar el diseno
> de la aplicacion propiamente tal, al respecto tambien
> he oido hablar muy bien de cherrypy.
>
> Entonces en eso estoy debo decidir entre psp o
> cherrypy no se  si cherrypy me permitiria crear un
> sitio dinamico, me imagino que si. La idea es que
> tampoco sea tan dramatica su escala de aprendizaje, ya
> que corro contra el tiempo.
>
> Entonces esas serian mis dos consultas; como saber si
> esta cargado el modulo python en apache ? y que
> herramienta utilizar psp, cherrypy u otra que estimen
> es mejor?, pero no tan dificil de aprehender (por
> tiempo).
>
> Fernando
>
> __________________________________________________
> Do You Yahoo!?
> Tired of spam?  Yahoo! Mail has the best spam protection around
> http://mail.yahoo.com
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es




Más información sobre la lista de distribución Python-es