Chris Jackson
christopher.jackson at gmail.com
Thu Jan 13 16:35:05 EST 2005
Hmm... the session object is still dropping (being lost) , the recovered (being remember) from time to time. Brief view of the Publisher Handler setup. *Note the sess variable is not visible to other functions unless declared globally. [Global Space] sess = None def login(req): global sess sess = Session(req) sess['this'] = 'that' ...<more code>... sess.save() return def otherFunc(req): global sess sess = Session(req) # tested with and without this line (correct?) sess.load() ...<more code>... sess.save() return I can see the session being written to a file in a serialized way in /tmp mp_sess.dbm.bak mp_sess.dbm.dat mp_sess.dbm.dir I've also executed a: watch -d 'ls -l /tmp/mp*' And upon creating new sessions...via separate browsers... I have seen the file size fo the above files grow in real-time, which means that data is in fact being added to the sessions which are partly human-readable. However, the problem I'm having is that occasionally when transitioning to other pages such as http://mysite.com/otherFunc, will return 'NoneType' object has no attribute 'load' # referring to the sess object. So I click the [BACK] button in the browser and re-submit the data. After about 7 times, the script all of a sudden recognizes the sess object. Sometimes this error does not happend and loads on the first try. How can I prevent this behavior? ~= Chris =~ On Wed, 12 Jan 2005 23:48:39 +0900, Hiroaki KAWAI <kawai at iij.ad.jp> wrote: > Of cource, most popular and easiest way is to use Session module. > Session will store the information somewhere in 'session storage' that > the module knows how to get it, and the actual mechanism is hidden. > # i.e., inter-process communication via file or database. > > So, make sure that you save the session information to the session > storage in each request processing as Ron says. ;-) > > > Chris Jackson <christopher.jackson at gmail.com> wrote: > > Ah, that makes sense...Now I just need to find which "inter-process" > > technique I should be using in order to maintain consistency ;) > > > > ~= Chris =~ > > > > > > On Wed, 12 Jan 2005 12:55:47 +0900, Hiroaki KAWAI <kawai at iij.ad.jp> wrote: > > > > > Depending on what type of apache configuration you run, one or more > > > > > interpreters will be used. Sometimes interpreters die and new ones get > > > > > created. > > > > > > > > Hmm...it's interesting you say that somtimes the interpreters die and > > > > new ones get created because I'm running into a "problem" where I will > > > > test a mod_python page and it will works perfectly several times again > > > > and again, but then i'll test it out again, and the interpreter seems > > > > to "forget" the values. I'll keep testing the page with the same > > > > values, and then the page will work again. > > > > > > One interpreter is created per one apache child process. If you're running > > > prefork MPM (and set MaxRequestsPerChild or have multiple spare child > > > servers), you're posting a HTTP request sometimes to the same interpreter, > > > sometimes to other interpreter. > > > I think one of 'inter-process' techniques is useful for what you're > > > trying. > > > # If I'm saying wrong, someone please correct. :-) > > > > > > ---Hiroaki Kawai > > > > > > _______________________________________________ > > > Mod_python mailing list > > > Mod_python at modpython.org > > > http://mailman.modpython.org/mailman/listinfo/mod_python > > > > > ---Hiroaki Kawai > > _______________________________________________ > Mod_python mailing list > Mod_python at modpython.org > http://mailman.modpython.org/mailman/listinfo/mod_python >
|