Gregory (Grisha) Trubetskoy
grisha at modpython.org
Tue Jan 13 22:26:29 EST 2004
Technically speaking the server doesn't hang, but your particular session does. The Session object contains a reference to a request object, and when you assign a session to a request you get a circular reference, therefore, the session unlock() method is never called. I have patched up mod_python so that now whenever the Session.lock() is called, it will register a cleanup to always unlock at the end of the request. This should address the hang, but I suspect that such a circular reference may end up eating memory, so it's probably a good idea to explicitely delete the [in this case] req.blupp attribute after you no longer need it with something like: req.blupp = None Grisha On Fri, 7 Nov 2003, Stian [iso-8859-1] S?iland wrote: > Again with 3.1.2b.. > > I've gone a bit tired of creating the session objects on every page, so > I made a fixuphandler to do the trick. The problem is, Apache hangs for > infinity: > > def fixuphandler(req): > # req.session = Session(req) > sezz = Session(req) > req.blapp = str(id(sezz)) > req.blupp = sezz > open("/tmp/faentosk", "w") > return apache.OK > > > Within index.py: (result is a html document) > > try: > result.add(req.blapp) > result.add(str(id(req.blupp))) > result.add(str(req.sezz)) > except Exception, e: > result.add(str(e)) > > Now, if I don't save the session instance (the sezz) - everything works. If I > try to store sezz in req.blupp - everything fails - the apache process hangs, > the file /tmp/faentosk is never created, ie. everything stops at the > previous line. > > I've tried making a Dummy class and instanciating it instead, sezz = > Dummy() - and writing out the id in same way, works like a charm, and > the id confirms that it's the same object instanciated within > fixuphandler. > > Any tip? > > -- > Stian S?iland Work toward win-win situation. Win-lose > Trondheim, Norway is where you win and the other lose. > http://www.soiland.no/ Lose-lose and lose-win are left as an > exercise to the reader. [Limoncelli/Hogan] > > _______________________________________________ > Mod_python mailing list > Mod_python at modpython.org > http://mailman.modpython.org/mailman/listinfo/mod_python >
|