[mod_python] Session problems

Chris Jackson christopher.jackson at gmail.com
Tue Feb 15 09:45:49 EST 2005


Perhaps your document index space is so large that it's eating too
much memory while trying to search.  Then again, it looks like it
searches fine with this line:

 ddcServer.ddcSearch = ddc3.DDCSearch(file(oclc2ddcFile), recFileName,
file(compHoldingsFile, 'rb', 100000))

But then just fails when trying to store it in the session.

Hmm, could there be an option either Apache, i would suspect, or maybe
even a mod_python option that restricts or limits the amount of memory
a single request or the sum of all request are allowed.

I'll keep looking to see what I can find.

~= Chris =~


On Tue, 15 Feb 2005 08:14:20 -0500, Wagner,Harry <wagnerh at oclc.org> wrote:
> 
> Take out sess.unlock(). There's no need to do this as it's handled by
> the class itself by default.  This could have perhaps lead to
> MemoryErrors.
> 
> ----
> Thanks Chris.  I removed the unlockm,, but still no luck.  The problem
> seems to be with the following statement:
> 
> sess['ddcSearch'] = ddcServer.ddcSearch
> 
> If I comment that statement out (and the following load for ddcSearch)
> then it works.  Otherwise it fails on the 'sess.save()' statement.
> ddcSearch is a fairly large and complex object.  Does this matter?  I'm
> running apache 2.0.40 and mod_python-3.1.3.
> 
> Thanks!  harry
> 
> 
> On Mon, 14 Feb 2005 17:11:07 -0500, Wagner,Harry <wagnerh at oclc.org>
> wrote:
> > I am trying to convert a program (see below) written for the
> > BaseHTTPServer to Apache and am getting a MemoryError trying to save
> > the session.  Is there a trick to this I am missing?  Thanks!  harry
> >
> > from mod_python import apache, util, Session import sys, urllib,
> > urlparse, xml.dom.pulldom, cgi, socket, xml.sax.saxutils, StringIO,
> > math, glob, os.path, ddc3
> >
> > def handler(req):
> >         sess = Session.Session(req)
> >         ddcServer = DDCServer(req)
> >         ddcServer.root = ddcServer.req.document_root()
> >         oclc2ddcFile = ddcServer.root + '/Collections/eBooks.ddc'
> >         recFileName = ddcServer.root +
> '/Collections/eBooks.ddc.ulines'
> >         compHoldingsFile = ddcServer.root + '/ihbnum.compressed'
> >         captionsFile = ddcServer.root + '/Captions'
> >         ddcServer.testing = 0
> >         if sess.is_new():
> >                 req.write("Session is new\n")
> >                 ddcServer.captions = DDCCaptions(captionsFile)
> >                 ddcServer.localText = TextLocalization(captionsFile)
> >                 ddcServer.ddcSearch =
> > ddc3.DDCSearch(file(oclc2ddcFile),
> > recFileName, file(compHoldingsFile, 'rb', 100000))
> >                 try:
> >                         sess['captions'] = ddcServer.captions
> >                         sess['localText'] = ddcServer.localText
> >                         sess['ddcSearch'] = ddcServer.ddcSearch
> >                         sess.save()
> >                         sess.unlock()
> >                         req.write("Session saved\n")
> >                 except MemoryError: req.write("MemoryError raised\n")
> >         elif not sess.is_new():
> >                 sess.load()
> >                 req.write("Previous session loaded\n")
> >                 ddcServer.captions = sess['captions']
> >                 ddcServer.localText = sess['localText']
> >                 ddcServer.ddcSearch = sess['ddcSearch']
> >                 req.write("data has finished loading\n")
> > #       ddcServer.do_GET()
> >         return apache.OK
> >
> > -------
> > Session is new
> > MemoryError raised
> >
> > _______________________________________________
> > Mod_python mailing list
> > Mod_python at modpython.org
> > http://mailman.modpython.org/mailman/listinfo/mod_python
> >
> 
> _______________________________________________
> 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