Python 将sud配置为使用自定义响应xml解析器处理大响应有效负载
我正在构建python客户端应用程序,以使用sudspython使用web服务中的数据。 现在,我可以远程呼叫并获得响应。 我的问题是,响应大小很大—现在是100Mb,将来还会增加。 我已经请求Web服务提供商更新API,允许我请求me模型的某些部分,但目前运气不好 请建议如何将suds客户端配置为:Python 将sud配置为使用自定义响应xml解析器处理大响应有效负载,python,suds,Python,Suds,我正在构建python客户端应用程序,以使用sudspython使用web服务中的数据。 现在,我可以远程呼叫并获得响应。 我的问题是,响应大小很大—现在是100Mb,将来还会增加。 我已经请求Web服务提供商更新API,允许我请求me模型的某些部分,但目前运气不好 请建议如何将suds客户端配置为: 对响应消息使用自定义流解析器-这将提取我只需要的信息 避免运行suds.sax.parser,不要构建包含整个响应树的DOM对象 另外,我希望我的解析器将响应直接保存到磁盘上的文件中,而不将其存
- 对响应消息使用自定义流解析器-这将提取我只需要的信息
- 避免运行suds.sax.parser,不要构建包含整个响应树的DOM对象
- 另外,我希望我的解析器将响应直接保存到磁盘上的文件中,而不将其存储在内存中(为了实现后者,我认为我需要传递自定义的suds传输,这将为我做到这一点)
suds.plugin.MessagePlugin
实现来清除save WebService响应负载,并防止suds将其解析为DOM。这是我原来问题的第2项:
避免运行suds.sax.parser,不要构建包含
全响应树
下面是将此方法用于公共Web服务的示例
请参阅中的完整代码
产出:
...
received 336 bytes
parsed result: None
response payload: <?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<m:CapitalCityResponse xmlns:m="http://www.oorsprong.org/websamples.countryinfo">
<m:CapitalCityResult>Amsterdam</m:CapitalCityResult>
</m:CapitalCityResponse>
</soap:Body>
</soap:Envelope>
。。。
接收到336字节
解析结果:无
响应有效载荷:
阿姆斯特丹
您可以使用retxml
选项,该选项使sud返回原始XML响应,绕过解析和缓慢的对象树构建。请在此处阅读更多信息:
...
received 336 bytes
parsed result: None
response payload: <?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<m:CapitalCityResponse xmlns:m="http://www.oorsprong.org/websamples.countryinfo">
<m:CapitalCityResult>Amsterdam</m:CapitalCityResult>
</m:CapitalCityResponse>
</soap:Body>
</soap:Envelope>