lxml + mod_python: cannot unmarshal code objects in restricted execution mode

Dmitri Fedoruk <[email protected]>
Newsgroups gmane.comp.python.xml
Message-ID <[email protected]>
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, 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

_______________________________________________
XML-SIG maillist  -  [email protected]
http://mail.python.org/mailman/listinfo/xml-sig
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.