2011-06-05 57 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