Как вы можете сериализовать экземпляры динамического класса в Python?

У меня есть wsdl, который занимает более двух минут, чтобы разобрать с Suds. Это слишком долго, потому что я хочу использовать объект клиента в кратковременном процессе. Я хотел бы сохранить объект клиента как статический ресурс, чтобы избежать затрат на создание клиента каждый раз. Несколько человек предложили своего рода шаблон синглтона для хранения клиентского объекта в работающем процессе, но я хочу, чтобы процесс длился недолго. Я также не ищу объяснения того, почему выборка динамически созданных классов не работает, поэтому размещайте сообщения только в том случае, если у вас есть решение.

from suds.client import Client

url = 'http://mssoapinterop.org/asmx/simple.asmx?WSDL'
client = Client(url)
print client

Поскольку выборка не будет работать, есть ли какой-нибудь способ извлечь точные байты для объекта клиента из памяти, используя расположение адреса, сохранить его как двоичный двоичный объект, а затем загрузить их обратно в память? Может быть, используя ctypes?

1 ответ

Вы задаете вопрос, относящийся к библиотеке suds? Было бы полезно, если бы вы могли абстрагировать вопрос от общего вопроса по Python, не относящегося к конкретной библиотеке.

Предполагая, что вас интересуют только данные в выходных данных клиентского вызова, которые содержат значения, возвращаемые из HTTP-вызова... почему бы не перевести возвращенные данные в свой собственный формат класса, который не является динамическим, а затем сериализовать / отобрать его?

Если вы пытаетесь сериализовать состояние какого-либо TCP-соединения, которое все равно кажется странным.

Возможно, вы можете уточнить.

Другие вопросы по тегам