[lxml-dev] lxml + mod_python: cannot unmarshal code objects inrestricted execution mode
Lee Brown
lee.brown at elecdev.com
Thu Sep 13 17:40:33 CEST 2007
Greetings!
The first thing I'd suggest is to also put your query on the Mod Python list as
well.
A few questions:
Are you trying to execute this code in a Handler or in a Filter? There's world
of hidden trouble lurking in Filters because of their re-entrant nature.
Which Apache MPM are you using? If you're using a multiple-process module, you
might try swithing to a single-process-multiple-thread module to see if this
behavior changes.
> -----Original Message-----
> From: lxml-dev-bounces at codespeak.net
> [mailto:lxml-dev-bounces at codespeak.net] On Behalf Of Dmitri Fedoruk
> Sent: Thursday, September 13, 2007 11:18 AM
> To: lxml-dev at codespeak.net
> Subject: [lxml-dev] lxml + mod_python: cannot unmarshal code
> objects inrestricted execution mode
>
> Hello everyone,
>
> I'm developing a mod_python application that is based on
> XML\XSLT transforming.
>
> I used 4Suite libraries for that, but as the speed was
> unacceptable for me, I switched to lxml. Everything became
> much easier and 10 times faster, but I've encountered the
> subject problem.
>
> In brief - all my data and xslt are stored and transferred in UTF-8.
> With 4Suite everything was fine all the time. With lxml it
> works fine from the console, but inside mod_python it
> occasionaly dies, ~ one time out of three. Strange - the same
> code with the same data works or dies by its own means.
>
> As far as I have found, there was a similar problem with
> PyXML and encodings module, this is the problem with UTF, but
> there was no clear solution.
>
> So, my configuration is the following:
> Python 2.5.1
> Server version: Apache/2.2.4 (FreeBSD)
> mod_python-3.3.1
>
> And the relevant parts of my code are these:
>
> def extApplyXslt(xslt, data, logger ):
> try:
> strXslt = urllib2.urlopen(xslt).read()
> # i have to read the xslt url to the python string
> except urllib2.HTTPError, e:
> .......
> except urllib2.URLError, e:
> .............
> try:
> xslt_parser = etree.XMLParser()
> xslt_parser.resolvers.add( PrefixResolver("XSLT") )
>
> # and now I have to use the string; a more elegant
> solution, anyone?
> f = StringIO(strXslt)
> xslt_doc = etree.parse(f, xslt_parser)
>
> # and here where the problem comes
> transform = etree.XSLT(xslt_doc)
>
> except Exception, exc:
> logger.log(logging.CRITICAL, exc.__str__() )
>
> try:
> result_tree = transform(data)
> return etree.tostring(result_tree, 'utf-8')
> except Exception, exc:
> print "xslt processing error!", exc.__str__()
> return ""
>
> It dies with the message 'cannot unmarshal code objects in
> restricted execution mode'. By profiling I detected the point
> where problem
> occurs:
> transform = etree.XSLT(xslt_doc)
>
> So, I would be grateful for any suggestions how to get rid of this.
> I'd really like to use lxml. Maybe I should initialize the
> xslt processor in somehow other way?
>
> Thanks in advance,
> Dmitri
> _______________________________________________
> lxml-dev mailing list
> lxml-dev at codespeak.net
> http://codespeak.net/mailman/listinfo/lxml-dev
>
More information about the lxml-dev
mailing list