Để tránh liên tục truy cập vào máy chủ SOAP trong quá trình phát triển, tôi đang cố lưu vào bộ nhớ cache kết quả để tôi có thể chạy phần còn lại của mã mà không phải truy vấn máy chủ mỗi lần.Làm cách nào để tôi có thể lấy kết quả?
Với mã bên dưới, tôi nhận được PicklingError: Can't pickle <class suds.sudsobject.AdvertiserSearchResponse at 0x03424060>: it's not found as suds.sudsobject.AdvertiserSearchResponse
khi tôi cố gắng chọn một kết quả phù hợp. Tôi đoán điều này là do các lớp được tạo động.
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()
Nếu tôi thả các phiên bản -1
giao thức từ pickle.dump(result, file, -1)
, tôi nhận được một lỗi khác nhau:
TypeError: a class that defines __slots__ without defining __getstate__ cannot be pickled
là tẩy những điều đúng đắn nên làm gì? Tôi có thể làm cho nó hoạt động được không? Có cách nào tốt hơn?
Có cách nào để có được định nghĩa của một lớp được tạo động để nó có thể được lưu vào một tập tin và sau đó được sử dụng như một lớp bình thường? – tponthieux