爲了避免在開發過程中反覆訪問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