2011-06-05 73 views
0

我有一个wsdl需要超过两分钟才能用Suds解析。这太长了,因为我想在短暂的进程中使用客户端对象。我想将客户端对象作为静态资源来保存,以避免每次创建客户端的开销。有几个人提出了一种singleton模式来将客户端对象存储在正在运行的进程中,但我想要一个短暂的进程。我也没有找到关于why的解释,但是酸洗动态创建的类不起作用,所以只有在有解决方案时才会发布。如何在Python中序列化动态类实例?

from suds.client import Client 

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

由于酸洗将无法正常工作,有一些方法抓住了客户对象出使用地址的位置存储的确切字节,它存储为一个二进制的blob,然后加载它们放回内存后?也许使用ctypes

回答

0

你在问一个特定于泡沫库的问题吗?如果您可以将问题抽象为与特定库不相关的通用python问题,这将会很有帮助。

假设您只对包含从HTTP调用返回的值的客户端调用输出中的数据感兴趣....为什么不将返回的数据转换为您自己的不是动态的类格式,然后序列化/泡菜。

如果您试图序列化一些看起来不太友好的TCP连接的状态。

也许你可以澄清。

+4

OP问一个关于特定图书馆的问题到底出了什么问题? – 2011-06-05 02:26:12

+0

Suds是一个SOAP库。大多数SOAP库会将存根类写入用于将对象转换为xml和从xml转换为对象的文件。 Suds使用元类来构建SOAP客户端,因此它必须解析每个进程的wsdl。 – tponthieux 2011-06-05 04:39:40

+0

@Josh - 只是为了澄清这是一个蟒蛇问题还是一个泡沫问题。我对泡沫无所作为,但也许可以回答一个蟒蛇问题。 - 欢呼 – 2011-06-05 18:17:34