同事修改wsdl文件的函数(添加、删除),发现suds调用的还是旧的wsdl。排查方法如下:
1、创建client对象,并在服务器(控制节点抓包),发现报文中,没有该suds创建的请求报文(tcp、http),怀疑有缓存。
2、查看创建Client的对象代码如下:
class Client(UnicodeMixin):
def __init__(self, url, **kwargs):
...
self.options = options
if "cache" not in kwargs:
kwargs["cache"] = suds.cache.ObjectCache(days=1)
从代码上缓存默认为一天。
3、缓存路径
/tmp/suds/
清除缓存后,重启服务后,就正常了。
4、拓展
修改缓存时间,代码如下:
cc = suds. cache.ObjectCache()
cc = suds.cache.ObjectCache(days=0)
client = Client(url, username='admin', password='admin' cache=cc)