完全禁用SUDS架构缓存

Ale*_*nko 1 python soap caching suds

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

我正在使用此代码:

url = 'http://someurl'
cli = suds.client.Client(url)
cli.set_options(cache=None)
return cli
Run Code Online (Sandbox Code Playgroud)

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

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

Fel*_*arz 7

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

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

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

from suds.cache import NoCache
# ...
cli = suds.client.Client(url, cache=NoCache())
Run Code Online (Sandbox Code Playgroud)

因为代码的某些部分不检查cache == None.

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