blog.bressure.net

Carnet professionnel d'un informaticien

Paramétrage

Session mod_python

admin
Green Tree Python

Mod_python est une extension de apache pour écrire des applications web en python. Une des fonctionnalités est la gestion des sessions. En J2EE, l’api des servlet offre la même fonctionnalité…en plus intuitif.

En effet pour un programmeur Java demander la session associé à une requête est une action banale. Mais J2EE est un framework plus sécurisant et accessible. Ainsi lors du traitement d’une requête, le programmeur de la servlet peut demander et redemander à tout moment la session associée à la requête courante et cela même si entre temps il y a eu un forward.

Contrairement à J2EE, mod_python s’appuie sur les fondements de apache: une requête est exécutée par un worker i.e. un thread à part et cela s’applique aussi aux redirections internes (équivalent des forward des servlet java). Cela pose un problème au développeur habitué à Java. Car par défaut mod_python crée les objets session en les verrouillant. Cela part d’une bonne intention: une session c’est un client (navigateur) donc il est bon d’éviter la concurrence qui est un cas anormale. Si une session est verrouillée par une requête (worker), alors toute tentative de demander la session par une autre requête est bloquée jusqu’à le déverrouillage par la première requête.

Ainsi lorsque dans un publisher on demande une session puis que l’on redirige (forward) vers une psp qui dans son code demande la session, alors il y a blocage car le traitement de la psp est fait comme si c’était une autre requête. Une solution consiste à reproduire le comportement J2EE en demandant explicitement de ne pas verrouiller la session.

session = Session.Session(req, lock=0)

Tags:

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Back to top