我的网络服务器需要从远程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)
会解决问题吗?对不起,我现在无法自己测试。
答案 0 :(得分:7)
首先,这有点难以肯定地回答,因为有多个版本和suds浮动的叉子。目前fedorahosted的版本看起来没有维护,但我看到其他的叉子非常活跃(相比之下)。
在构造函数中设置缓存选项似乎更好,因为Client
实例化了一些其他类并传递了缓存选项。这意味着稍后更改它可能对这些其他类没有影响(我没有足够深入地遵循代码)。
似乎禁用缓存的正确方法是使用
from suds.cache import NoCache
# ...
cli = suds.client.Client(url, cache=NoCache())
因为代码的某些部分没有检查cache == None
。
但是,我无法确定上述建议会禁用所有缓存,因为我在邮件列表中看到了其他帖子,这些帖子表明可能无法无条件地禁用所有缓存。