Python 将sud配置为使用自定义响应xml解析器处理大响应有效负载

Python 将sud配置为使用自定义响应xml解析器处理大响应有效负载,python,suds,Python,Suds,我正在构建python客户端应用程序,以使用sudspython使用web服务中的数据。 现在,我可以远程呼叫并获得响应。 我的问题是,响应大小很大—现在是100Mb,将来还会增加。 我已经请求Web服务提供商更新API,允许我请求me模型的某些部分,但目前运气不好 请建议如何将suds客户端配置为: 对响应消息使用自定义流解析器-这将提取我只需要的信息 避免运行suds.sax.parser,不要构建包含整个响应树的DOM对象 另外,我希望我的解析器将响应直接保存到磁盘上的文件中,而不将其存

我正在构建python客户端应用程序,以使用sudspython使用web服务中的数据。 现在,我可以远程呼叫并获得响应。 我的问题是,响应大小很大—现在是100Mb,将来还会增加。 我已经请求Web服务提供商更新API,允许我请求me模型的某些部分,但目前运气不好

请建议如何将suds客户端配置为:

  • 对响应消息使用自定义流解析器-这将提取我只需要的信息
  • 避免运行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>