2014-11-22 77 views
1

我的網絡服務器需要向遠程SOAP服務請求數據。這很少發生,所以我不想有任何緩存。實際上,SOAP提供者有時會更改模式併爲其添加新參數 - 所以我必須每次下載並解析整個模式。完全禁用SUDS架構緩存

我使用這個代碼:

url = 'http://someurl' 
cli = suds.client.Client(url) 
cli.set_options(cache=None) 
return cli 

但還是有緩存。並且/ tmp/suds中的臨時數據被創建。我如何完全禁用泡沫緩存?

將更改cli.set_options.Client(url, cache=None)解決此問題?對不起,我目前無法自己測試此功能。

回答

7

首先這是有點難以明確地回答,因爲有多個版本和浮動的泡沫叉。目前fedorahosted的版本看起來沒有保留,但我看到其他叉子非常活躍(相比之下)。

在構造函數中設置緩存選項似乎更好,因爲Client實例化了一些其他類並傳遞了緩存選項。這意味着稍後改變它可能對這些其他類沒有影響(我沒有太確定地深入瞭解代碼)。

而且似乎禁用緩存正確的事情就是用

from suds.cache import NoCache 
# ... 
cli = suds.client.Client(url, cache=NoCache()) 

因爲代碼的某些部分不檢查cache == None

但是,我無法確定上述的建議是否會禁用所有緩存,因爲我在郵件列表上看到了其他帖子,這表明可能無法無條件禁用所有緩存。

+0

謝謝菲利克斯,我會檢查這一點,並接受你的答案,如果它的工作。順便說一下,我正在使用Suds 0.4。它沒有維護? – 2014-11-24 00:23:33

+1

如果你是在泡沫之後,你最好的選擇可能是[jurko-suds](https://bitbucket.org/jurko/suds)。我認爲谷歌也會根據他們的需求使用這種泡沫叉的修改版本。無論出於何種原因,fedorahosted的泡沫保持者自從幾年以來一直處於非活動狀態(我試圖在不久前嘗試平鋪它們,但無濟於事)。 – 2014-11-25 08:04:19