完全禁用SUDS架构缓存

时间:2014-11-22 23:11:59

标签: python caching soap suds

我的网络服务器需要从远程SOAP服务请求数据。这很少发生,所以我不想有任何缓存。实际上,SOAP提供程序有时会更改模式并向其添加新参数 - 因此我每次都必须下载并解析整个模式。

我正在使用此代码:

url = 'http://someurl'
cli = suds.client.Client(url)
cli.set_options(cache=None)
return cli

但这仍然有缓存。并创建/ tmp / suds中的临时数据。我如何完全禁用suds缓存?

cli.set_options更改为.Client(url, cache=None)会解决问题吗?对不起,我现在无法自己测试。

1 个答案:

答案 0 :(得分:7)

首先,这有点难以肯定地回答,因为有多个版本和suds浮动的叉子。目前fedorahosted的版本看起来没有维护,但我看到其他的叉子非常活跃(相比之下)。

在构造函数中设置缓存选项似乎更好,因为Client实例化了一些其他类并传递了缓存选项。这意味着稍后更改它可能对这些其他类没有影响(我没有足够深入地遵循代码)。

似乎禁用缓存的正确方法是使用

from suds.cache import NoCache
# ...
cli = suds.client.Client(url, cache=NoCache())

因为代码的某些部分没有检查cache == None

但是,我无法确定上述建议会禁用所有缓存,因为我在邮件列表中看到了其他帖子,这些帖子表明可能无法无条件地禁用所有缓存。