[mod_python] Lost Session

Jim Gallacher jg.lists at sympatico.ca
Mon Jun 20 12:59:06 EDT 2005


Any chance you are calling req.write('stuff') before Session.Session()? 
If so, the reqponse header will already have been sent, so the cookie 
Session() creates never makes it to the browser.

Jim


Jeremy Kohansimeh wrote:
> I followed Jim's suggestion to see if the pysid cookie for the requests 
> are the same and they are not.  Do you have any other tips for debugging 
> this?  I am calling the save function before I start writing a response 
> to the browser (I know there can be some conflict in saving a session if 
> something has already been written to the browser since the pysid cookie 
> can no longer be set).
> 
> Jeremy
> 
> On 6/20/05, *Jim Gallacher* <jg.lists at sympatico.ca 
> <mailto:jg.lists at sympatico.ca>> wrote:
> 
>     Jeremy Kohansimeh wrote:
>      > Hello,
>      >
>      > I am having trouble recovering a session.  On the initial request, I
>      > create some entries for the session and then save it (I have
>     confirmed
>      > that there is data in the session before I save it and that the
>     save()
>      > function is being called).  On subsequent requests, the session
>     object
>      > that I have created is not reinstated, instead a new one is
>     created (I
>      > have coonfirmed this with the is_new() function).  I have checked my
>      > browser and there is a pysid cookie being set on the first request.
> 
>     Is pysid the same for subsequent requests? I think something got out of
>     sync.
> 
>      > Does anyone have any tips to debug this?  I am really at a loss
>     for what
>      > is going on.
>      >
>      > Here is the code that I use to reinstate/create a session:
>      >
>      > def handler(req, **kw):
>      >     """handles initial requests"""
>      >
>      >     f = open( LOGFILE, 'a+')
>      >
>      >     req.sess = Session.Session( req)
> 
>     Session.Session() loads the session if it exists, otherwise creates a
>     new one, as well as a new session cookie / session id. The new session
>     *does not* automatically get saved. You need to call req.sess.save() at
>     some point. I know you know this. ;)
> 
>      >
>      >     if not req.sess.is_new():
>      >         # this is an old session, so load it up
>      >         req.sess.load()
> 
>     req.sess.load() is redundant.
> 
>      >         f.write( 'old session\n')
>      >     else:
>      >         f.write( 'new session\n')
> 
>     It's a new session (for whatever reason) with a new pysid in the cookie
>     sent to the client, but we never call req.sess.save() in this request.
>     Henceforth, every request will generate a new session.
> 
>     Regards,
>     Jim
> 
> 
> 
> 
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Mod_python mailing list
> Mod_python at modpython.org
> http://mailman.modpython.org/mailman/listinfo/mod_python



More information about the Mod_python mailing list