Session mod_python

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)

Cet article, publié dans Paramétrage, est tagué . Ajoutez ce permalien à vos favoris.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s