为了避免在开发过程中重复访问 SOAP 服务器,我尝试缓存结果,这样我就可以运行其余代码,而无需每次都查询服务器。
使用下面的代码,PicklingError: Can't pickle <class suds.sudsobject.AdvertiserSearchResponse at 0x03424060>: it's not found as suds.sudsobject.AdvertiserSearchResponse
当我尝试腌制泡沫结果时,我得到了一个结果。我猜这是因为类是动态创建的。
import pickle
from suds.client import Client
client = Client(...)
result = client.service.search(...)
file = open('test_pickle.dat', 'wb')
pickle.dump(result, file, -1)
file.close()
如果我-1
从 中删除协议版本 pickle.dump(result, file, -1)
,我会得到一个不同的错误:
TypeError: a class that defines __slots__ without defining __getstate__ cannot be pickled
酸洗是正确的做法吗?我可以让它工作吗?有没有更好的办法?