OVH Cloud OVH Cloud

mod_python + url

4 réponses
Avatar
Julien
Bonjour,

Je fais quelques essais pour utiliser mod_python.

J'utilise apache 2.0.52, python 3.4.2 et mod_python 3.1.3-5-2

J'utilise la configuration apache suivante :

ScriptAlias /py/ "/var/www/py/"
<Directory "/var/www/py">
SetHandler mod_python
PythonHandler mod_python.publisher
PythonDebug On
</Directory>

En utilisant publisher, j'ai bien compris le fonctionnement
des url, à la manière de zope.

Par contre j'ai des problèmes pour intégrer dans mon code
les images ainsi que les feuilles de style. Le chemin
vers ces fichiers ne convient pas et l'affichage ne se fait pas.

from mod_python import apache
def home(req):
req.content_type='text/html; charset=iso-8859-1'
req.write(header)
req.write("""<img src="../img/boule.jpg>""")
req.write(footer)

Mon fichier python se nomme start.py

J'accède à mon site par l'url :

http://XXX.XXX.XXX.XXX/py/start/home

L'image se trouve dans le dossier img lui-même
dans le dossier py.

L'image ne s'affiche pas dans la page qui elle s'affiche correctement.

Le problème doit venir du chemin de l'url mais je ne sais pas
comment le résoudre, y a-t-il une directive à mettre dans apache ?
Y a-t-il une ruse ou simplement une manière pythonesque de procéder ?

Cordialement,

Julien

4 réponses

Avatar
Bruno Desthuilliers
Bonjour,

Je fais quelques essais pour utiliser mod_python.

J'utilise apache 2.0.52, python 3.4.2 et mod_python 3.1.3-5-2

J'utilise la configuration apache suivante :

ScriptAlias /py/ "/var/www/py/"
<Directory "/var/www/py">
SetHandler mod_python
PythonHandler mod_python.publisher
PythonDebug On
</Directory>

En utilisant publisher, j'ai bien compris le fonctionnement
des url, à la manière de zope.


Yep... Mais il semble que le module publisher de mod_python soit
sévèrement buggé.

Par contre j'ai des problèmes pour intégrer dans mon code
les images ainsi que les feuilles de style. Le chemin
vers ces fichiers ne convient pas et l'affichage ne se fait pas.

(snip)

PAQJC, la directive SetHandler fait que le handler est appelé pour
*toutes* les urls en dessous du répertoire concerné. Il faut donc que le
handler gère lui-même les requêtes concernant tes images.

Les deux solutions possibles avec mod_python.publisher sont:
- de gérer effectivement ces requêtes (avec request.sendfile() par exemple)
- de déplacer le dossier img pour qu'il ne soit pas en dessous du handler

Une troisième solution (celle que j'explorerais en premier, je pense)
serait d'utiliser plutôt Vampire (je ne l'ai pas encore testé
personnellement, mais ça m'a l'air bien pensé)
http://www.dscpl.com.au/projects/vampire/

HTH
Bruno

Avatar
Julien
Bonjour,

Yep... Mais il semble que le module publisher de mod_python soit
sévèrement buggé.


Apparemment c'est la cas car je tombe sur des comportements
non habituels.

(snip)
PAQJC, la directive SetHandler fait que le handler est appelé pour
*toutes* les urls en dessous du répertoire concerné. Il faut donc que le
handler gère lui-même les requêtes concernant tes images.

Les deux solutions possibles avec mod_python.publisher sont:
- de gérer effectivement ces requêtes (avec request.sendfile() par exemple)
- de déplacer le dossier img pour qu'il ne soit pas en dessous du handler


Je n'ai pas trouvé suffisamment de docs à ce sujet.

Une troisième solution (celle que j'explorerais en premier, je pense)
serait d'utiliser plutôt Vampire (je ne l'ai pas encore testé
personnellement, mais ça m'a l'air bien pensé)
http://www.dscpl.com.au/projects/vampire/


J'ai jetté un oeil rapide à Vampire mais ça me paraît être des solutions
de bricolage. En fait je me suis rabattu sur Cherrypy + Apache et ça à
l'air de convenir pour les tâches que j'ai à réaliser !

Encore merci, je me pencherai avec davantage de rigueur sur Vampire
dès que j'aurais un peu plus de temps. Encore merci.

Cordialement,

Julien

Avatar
bruno modulix
Julien wrote:
Bonjour,

Yep... Mais il semble que le module publisher de mod_python soit
sévèrement buggé.



Apparemment c'est la cas car je tombe sur des comportements
non habituels.


Si tu fais référence au problème évoqué dans ton post précédent, ce
n'est pas un bug, c'est le fonctionnement normal de Apache sur une
directive SetHandler !-)

(snip)
PAQJC, la directive SetHandler fait que le handler est appelé pour
*toutes* les urls en dessous du répertoire concerné. Il faut donc que
le handler gère lui-même les requêtes concernant tes images.

Les deux solutions possibles avec mod_python.publisher sont:
- de gérer effectivement ces requêtes (avec request.sendfile() par
exemple)
- de déplacer le dossier img pour qu'il ne soit pas en dessous du handler



Je n'ai pas trouvé suffisamment de docs à ce sujet.


C'est dans la doc apache...

Une troisième solution (celle que j'explorerais en premier, je pense)
serait d'utiliser plutôt Vampire (je ne l'ai pas encore testé
personnellement, mais ça m'a l'air bien pensé)
http://www.dscpl.com.au/projects/vampire/



J'ai jetté un oeil rapide à Vampire mais ça me paraît être des solutions
de bricolage.


En quoi ? (NB : j'ai juste parcouru la doc pour le moment, mais ça a
l'air quand même assez sérieux).

Ceci étant, c'était une suggestion en remplacement du module publisher,
mais on peut très bien utiliser mod_python sans publisher (AMHA, c'est
même préférable... sinon, autant sortir l'artillerie lourde (ie: Zope))

--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in ''.split('@')])"


Avatar
Julien
bruno modulix wrote:

Si tu fais référence au problème évoqué dans ton post précédent, ce
n'est pas un bug, c'est le fonctionnement normal de Apache sur une
directive SetHandler !-)


Toutes mes excuses pour mon ignorance ;)

C'est dans la doc apache...


Je retourne donc dans la doc d'Apache...;)

Ceci étant, c'était une suggestion en remplacement du module publisher,
mais on peut très bien utiliser mod_python sans publisher (AMHA, c'est
même préférable... sinon, autant sortir l'artillerie lourde (ie: Zope))


Zope j'aimais bien aussi auparavant, mais bon c'est un peu lourd et le
temps de me remettre à comprendre toutes ses subtilités, je n'avance pas
dans le développement.

J'ai commencé à développer sous Cherrypy et je vais me repencher sur le
cas mod_python + vampire histoire de mourir moins con ;)

Encore merci.

Cordialement,

Julien