Para evitar el acceso repetido a un servidor SOAP durante el desarrollo, intento almacenar en caché los resultados para poder ejecutar el resto de mi código sin consultar el servidor cada vez.¿Cómo puedo eliminar los resultados de la espuma?
Con el siguiente código obtengo un PicklingError: Can't pickle <class suds.sudsobject.AdvertiserSearchResponse at 0x03424060>: it's not found as suds.sudsobject.AdvertiserSearchResponse
cuando trato de extraer un resultado de espuma. Supongo que esto se debe a que las clases se crean dinámicamente.
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()
Si se me cae la versión -1
protocolo de pickle.dump(result, file, -1)
, me sale un error diferente:
TypeError: a class that defines __slots__ without defining __getstate__ cannot be pickled
Está decapado lo que hay que hacer? ¿Puedo hacer que funcione? ¿Hay una mejor manera?
¿Hay alguna forma de obtener la definición de una clase creada dinámicamente para que pueda guardarse en un archivo y luego usarse como una clase normal? – tponthieux