Python在apache + mod_wsgi下使用lxml.etree.XMLSchema(tree)时卡死

5 投票
3 回答
1160 浏览
提问于 2025-04-16 15:28

Python在

lxml.etree.XMLSchema(tree)

在apache服务器 + mod_wsgi(Windows)上运行时卡住了

但在使用Django开发服务器时,一切都正常

如果你知道其他好用的XML验证方案,可以对XSD进行验证,请告诉我

更新:

我在使用soaplib,它使用lxml

logger.debug("building schema...")
self.schema = etree.XMLSchema(etree.parse(f))

logger.debug("schema %r built, cleaning up..." % self.schema)

我在apache日志中看到“正在构建模式...”的字样,但没有看到“模式 %r 已构建,正在清理...”的消息

更新2:我用MSVS 2010的Visual C++构建了lxml 2.3;之后在这一行

self.schema = etree.XMLSchema(etree.parse(f))
出错,出现了未处理的异常,错误信息是:在httpd.exe中发生访问冲突,写入位置0x00000010。

3 个回答

1

我在Linux系统上遇到过类似的问题。你可以试着安装一个更新版本的libxml2,然后重新安装lxml,反正这是我解决问题的方法。

2

我也遇到过同样的问题(lxml 2.2.6,mod_wsgi 3.2)。解决这个问题的一种方法是给构造函数传一个文件或者文件名:XMLSchema(file=)。

3

我用的解决办法是设置:

WSGIApplicationGroup %{GLOBAL}

更多细节可以在这里找到。

撰写回答