Skip to main content
 首页 » 编程设计

python之完全禁用 SUDS 模式缓存

2025年05月04日18lvdongjie

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

我正在使用这段代码:

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

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

将 cli.set_options 更改为 .Client(url, cache=None) 会解决问题吗?抱歉,我目前无法自行测试。

请您参考如下方法:

首先,要明确回答这个问题有点困难,因为有多个版本和 SOAP 水叉在四处漂浮。目前来自 fedorahosted 的版本看起来没有维护,但我看到其他分支非常活跃(相比之下)。

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

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

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

因为部分代码不检查cache == None。

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