【问题标题】:Suds is not caching wsdlsSuds 没有缓存 wsdls
【发布时间】:2012-07-21 01:36:32
【问题描述】:

我正在使用 Suds 通过 SOAP 进行 RPC 调用,并且客户端拒绝在调用之间进行缓存(导致等待 30 多秒等待客户端初始化)。任何人都可以看到除了以下内容之外还需要做什么才能启用缓存?

client = Client(WSDL_URL)
cache = client.options.cache
cache.setduration(days=10)
cache.setlocation(SUDS_CACHE_LOCATION)

【问题讨论】:

  • WSDL 文件大小为 22KB(suds 还会下载所有引用的架构,这会增加加载时间)
  • 如果您将 WSDL 保存到本地文件并从 Suds 加载它,是否会缩短加载时间?
  • 不,还是一样。通过转到“另存为”并使用相同的文件名保存来保存到 suds 位置。不确定 suds 在查找缓存命中时是否需要任何其他信息?
  • 你能给我们看看 WSDL URL 或文件吗?

标签: suds


【解决方案1】:

这可能是库本身的错误。缓存文件需要以二进制方式写入。这可以在 cache.py 中修复:

1) 在 FileCache.put() 中,更改这一行:

f = self.open(fn, 'w')

f = self.open(fn, 'wb')

2) 在 FileCache.getf() 中,更改这一行:

return self.open(fn)

return self.open(fn, 'rb')

更多详情见:

Suds is not reusing cached WSDLs and XSDs, although I expect it to

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多