Wagner,Harry
wagnerh at oclc.org
Tue Feb 15 08:14:20 EST 2005
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 >
|