【问题标题】:Completely disable SUDS schema caching完全禁用 SUDS 架构缓存
【发布时间】:2014-11-22 23:11:59
【问题描述】:

我的网络服务器需要从远程 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) 会解决问题吗?抱歉,我目前无法自行测试。

【问题讨论】:

    标签: python caching soap suds


    【解决方案1】:

    首先,这有点难以明确回答,因为有多种版本和泡沫四处飘荡。目前,fedorahosted 的版本看起来没有维护,但我看到其他分支非常活跃(相比之下)。

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

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

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

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

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

    【讨论】:

    • 谢谢菲利克斯,如果可行,我会检查并接受您的回答。顺便说一句,我正在使用 Suds 0.4。是否无人维护?
    • 如果你喜欢泡沫,你最好的选择可能是jurko-suds。我认为谷歌也使用了修改版的 suds fork 来满足他们的需要。出于某种原因,fedorahosted 的 suds 维护者几年来一直处于不活动状态(我很久以前尝试 ping 他们但无济于事)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 2011-01-10
    • 1970-01-01
    • 2011-02-09
    • 2014-06-24
    • 2015-11-11
    相关资源
    最近更新 更多