Чтобы избежать неоднократного доступа к 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
ли травление правильно делать? Могу ли я заставить его работать? Есть ли способ лучше?
Есть ли способ получить определение динамически созданного класса, чтобы его можно было сохранить в файл, а затем использовать как обычный класс? – tponthieux