2010-11-21 27 views
0

J'ai un site web que j'ai écrit en python en utilisant le CGI. C'était génial jusqu'à très récemment, quand la capacité d'échelle est devenue importante.Comment lire les cookies dans un script python lors de l'utilisation de mod_python

J'ai décidé, parce que c'était très simple, d'utiliser mod_python. La plupart des fonctionnalités de mon site sont stockées dans un module python que j'appelle pour rendre les différentes pages. L'un des scripts CGI pourrait ressembler à ceci:

#!/usr/bin/python 

import mysite 

mysite.init() 
mysite.foo_page() 
mysite.close() 

et monsite, je pourrais avoir quelque chose comme ceci:

def get_username(): 
    cookie = Cookie.SimpleCookie(os.environ.get("HTTP_COOKIE","")) 
    sessionid = cookie['sessionid'].value 
    ip = os.environ['REMOTE_ADDR'] 
    username = select username from sessions where ip = %foo and session = %bar 
    return(username) 

iront chercher le nom d'utilisateur de l'utilisateur actuel. Le problème est que cela dépend du fait que os.envrion soit rempli lorsque os est importé dans le script (en haut du module). Comme j'utilise maintenant mod_python, l'interpréteur ne charge ce module qu'une seule fois et ne le remplit qu'une seule fois. Je ne peux pas lire les cookies car leur OS a les variables d'environnement de la machine locale, pas l'utilisateur distant.

Je suis sûr qu'il y a un moyen de contourner cela, mais je ne suis pas sûr de ce que c'est. J'ai essayé os de réimporter dans la fonction get_username, mais pas de dés. :(

Toute pensée?

Répondre

0

Quelle version de mod_python utilisez-vous? 3.x Mod_python comprend une classe Cookie séparée pour rendre cela plus facile (voir here)

dans les versions antérieures IIRC vous pouvez obtenir les biscuits entrants à l'intérieur de l'organe headers_in de l'objet de la demande

+0

req.headers_in [ « cookies »] -. Eh oui, c'est tout Merci.! – Ryan