Suds忽略缓存设置?
我正在使用suds 0.3.8、Python 2.4.3和Django 1.1.1。继承下来的代码中,缓存文件的有效期很长,但它们却按照默认设置每24小时过期一次。外部服务器上托管的模式不太稳定,所以网站每晚都会崩溃,我快要撑不下去了。
有没有人知道这段代码哪里出问题了?
imp = Import('http://domain2.com/url')
imp.filter.add('http://domain3.com/url')
imp.filter.add('http://domain4.com/url')
imp.filter.add('http://domain5.com/url')
d = ImportDoctor(imp)
url = "http://domain.com/wsdl"
client = Client(url, doctor=d, timeout=30)
clientcache = client.options.cache
clientcache.setduration(days=360)
2 个回答
0
这个问题可能是因为Suds 0.3.8这个版本的默认缓存类型支持得不好,或者可能这个版本本身就有个bug。如果你能升级到Suds 0.3.9或者更高的版本(最新的是0.4),那么这个功能就能正常工作了。
11
我来回答我自己的问题:
其实这并不是版本的问题,而是用户操作错误。可惜的是,suds的文档写得不够清楚。看完文档后,可能会觉得上面的代码可以直接用,但在suds v0.39及以上版本中,应该这样写:
imp = Import('http://domain2.com/url')
imp.filter.add('http://domain3.com/url')
imp.filter.add('http://domain4.com/url')
imp.filter.add('http://domain5.com/url')
d = ImportDoctor(imp)
oc = ObjectCache()
oc.setduration(days=360)
url = "http://domain.com/wsdl"
client = Client(url, doctor=d, cache=oc, timeout=30)
现在回头看,这样理解就很合理了:缓存必须在初始化客户端之前进行配置。
希望这能帮助到其他想要设置suds缓存的人,如果你发现设置没有生效,可能就是这个原因。