为了避免在开发过程中反复访问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()
如果我放弃从pickle.dump(result, file, -1)
的-1
协议版本,我得到一个不同的错误:
TypeError: a class that defines __slots__ without defining __getstate__ cannot be pickled
是酸洗做正确的事?我可以使它工作吗?有没有更好的办法?
有没有办法让一个动态创建的类的定义,以便它可以保存到一个文件,然后用作一个普通的类? – tponthieux 2011-06-14 20:27:08