Python için hangi SOAP istemci kütüphaneleri var ve bunların belgeleri nerede? [kapalı]


333

Daha önce hiç SOAP kullanmadım ve Python için biraz yeniyim. Bunu her iki teknolojiyle tanışmak için yapıyorum. Ben yükledim SOAPlib ve ben onların okumaya çalıştım Müşteri belgelerine, ama ben de iyice anlamıyorum. Bakabileceğim Python için bir SOAP İstemci kütüphanesi olmak için daha uygun olan başka bir şey var mı?

Düzenleme: Yardımcı olması durumunda, Python 2.6 kullanıyorum.


1
O mu var böyle önceden var olan web hizmetlerini kullanmak gibi SABUN olunur? Python'un xmlrpclib'inin kullanımı çok basit ve SOAP hizmetlerimizi onunla XMLRPC'ye taşıdım.
Kirk Strauser

26
Bazen sadece SADECE SOAP sağlanan hizmete bağlanmak istiyorum yani evet - iyi python SOAP lib er ya da geç ihtiyaç duyacağınız bir şeydir. Servis sağlayıcıyı
SOAP'ı

34
2011 yılında alakalı bir güncelleme olabilir mi? Görünüşe göre hiç kimse bu soruyu bir daha soramaz.
Marcin

1
Bilginize: Python 3 için
SOAP'ı

5
Bu soruyu ziyaret eden herkes, mevcut / yeni yanıtlar gönderilebilmesi için soruyu yeniden açmak üzere oy kullanır.
ocodo

Yanıtlar:


388

Güncelleme (2016):

Yalnızca SOAP istemcisine ihtiyacınız varsa, zeep adlı iyi korunmuş bir kütüphane vardır . Hem Python 2 hem de 3'ü destekler :)


Güncelleme:

Yukarıda belirtilenlere ek olarak, SOAP ve diğer tüm web servis türleri için aktif olarak tutulan ve önerilen tüm modüller ile her zaman güncel olan Python WebServices sayfasına atıfta bulunacağım .


Ne yazık ki, şu anda bir "en iyi" Python SOAP kütüphanesi olduğunu sanmıyorum. Mevcut ana akımların her birinin kendi artıları ve eksileri vardır.

Eski kütüphaneler:

  • SABUN : "En iyisiydi" ama artık korunmuyor . Python 2.5+ üzerinde çalışmaz

  • ZSI : Kullanımı çok acı verici ve gelişme yavaş. SOAPy'den farklı olan "SOAPpy" adlı bir modüle sahiptir (yukarıda).

"Daha yeni" kütüphaneler:

  • SUDS : Çok Pythonic ve WSDL tüketen SOAP istemcileri oluşturmak kolaydır. SOAP sunucuları oluşturmak biraz daha zordur. (Bu paket Python3 ile çalışmaz. Python3 için bkz. SUDS-py3)

  • SUDS-py3 : SUDS'in Python3 sürümü

  • spyne : Sunucu oluşturmak kolaydır ve istemcileri biraz daha zorlayıcı hale getirir . Belgeler biraz eksik.

  • ladon : Sunucu oluşturmak, soaplib'de olduğu gibi (dekoratör kullanarak). Ladon, ekstra kullanıcı kodu gerekmeksizin aynı anda SOAP'tan daha fazla arabirim ortaya çıkarır.

  • pysimplesoap : çok hafif ancak hem istemci hem de sunucu için kullanışlıdır - web2py ile birlikte gelen bir web2py sunucu entegrasyonu içerir.

  • SOAPpy : Yukarıdaki ZSI bağlantısında barındırılan terk edilmiş SOAPpy'den farklı olarak, bu sürüm aslında 2011 yılına kadar korundu, şimdi de terk edilmiş gibi görünüyor.
  • soaplib : Sabun web servislerini yazmak ve aramak için kullanımı kolay python kütüphanesi. Soaplib ile yazılan web servisleri basit, hafiftir, diğer SOAP uygulamalarıyla iyi çalışır ve WSGI uygulamaları olarak dağıtılabilir.
  • osa : Hızlı / ince, kullanımı kolay bir SOAP python istemci kütüphanesi.

Yukarıdakilerden sadece SUDS'u kişisel olarak kullandım ve çok beğendim.


2
SOAPy ve SOAPpy aslında farklıdır. Açıklığa kavuşturmak için düzenledim ve gönderiyi bir topluluk vikisine çevirdim.
Samat Jain

17
SUDS için +1, harika kütüphane! Bir proxy arkasında HTTPS web hizmetleri ile SUDS kullanma sorunları ile karşılaştım. Bilinen bir Python urllib2sorunu olduğu ortaya çıktı. Daha fazla ayrıntı için cevabıma bakın.
sstock

4
SUD'ları denedim, ancak bir WSDL açarken sonsuz bir döngüye girdi; sonra python bir özyineleme sınırı hatası attı. Sorunla ilgili bu açık bileti buldum: fedorahosted.org/suds/ticket/239 Görünüşe göre bu 3 yıl önce bir kütüphane kırılma hatasıydı ve hala düzeltilmedi.
Buttons840

11
En köpük bir muhafaza çatal var bitbucket.org/jurko/suds
Sjaak Trekhaak

1
Bugün SUDS'u yalnızca veri almak için kullanmaya başladım. Sabun başlıklarında temel bir apikey auth'u sorunsuz bir şekilde ele aldı ve yanıtların ayrıştırılması oldukça kolaydı. Belgeler de oldukça iyi.
sakarin

47

Bu soruya verilen diğer cevapların tavsiyelerini takip ettim ve SUDS'u denedim. "Öfkeyle" kullandıktan sonra kabul etmeliyim: SUDS çok güzel! Şiddetle tavsiye edilir!

Bir proxy'nin arkasından HTTPS tabanlı web hizmetlerini aramakta zorlandım. Bu yazı yazılırken, bu, kullanılan tüm Python web hizmeti istemcilerini etkiler, bu urllib2yüzden çözümü burada belgeleyeceğim.

urllib2Aşağıdaki piton 2.6.2 ile modül nakliye bir sorunu olmayacaktır CONNECTHTTPS aşırı HTTP vekil oturumları için proxy. Bu, uzun bir zaman aşımı veya şanslıysanız, şuna benzer bir hata ile sonuçlanır:

abort: error: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol

Bu, Python hata izleyicide issue1424152 idi . Hata raporuna Python 2.x ve Python 3.x'te bu sorunu çözecek ekler vardır. Sorun zaten düzeltildi .


Sadece yükledi ve Python için tamamen yeni olmama rağmen çok sezgisel hissettim ve SUDS isteklerini birkaç dakika içinde gönderebilirim. Kütüphane harika!
Leonid

1
Bunu güncellemenin sakıncası var mı? Soruyorum çünkü bağlantıyı tıkladım ve hata düzeltildi.
tshepang

3
Utanç artık
korunmuyor

Bizim için suds de iyi çalışıyor .. Ancak çok yavaş. Bir xml sabun dosyasını geri almak 0,5 saniye sürer ve işlenmesi çift çekirdekli bir makinede 5 saniye sürer!
TjerkW

1
@paulm: deneyin bitbucket.org/jurko/suds
johndodo

19

SUDS ile iyi deneyimlerim vardı https://fedorahosted.org/suds

TestSuite'lerini dokümantasyon olarak kullandılar.


1
SUDS harika! kullanımı kolay, iyi dokümanlar, harika şeyler!
Sander

1
Bakımlı, python3 destekli çatal: suds-jurko . pip install suds-jurko
laffuste

Ben iyi çalışan ama herhangi bir yanıt almayan, köpük ile async sabun api çağırmaya çalışıyorum, birisi bu konuda yardımcı olabilir, benim s .: stackoverflow.com/questions/39227719/…
Vikram Singh Chandel

10

SUDS gidilecek yoldur, bunun hakkında soru yok.


5
Ayrıca çok sayıda WSDL dosyasında da başarısız olur. Bu iddiayı desteklemek için - örneğin Bing harita API'leri, bunlardan bazıları başarısız olur ve köpükler bunları ayrıştıramaz.

3
SUDS'nin SSL uç noktalarını desteklediğini gördüm.
leonigmig


6

SUDS'nin kullanımı kolaydır, ancak yeniden giriş garantisi yoktur. Daha iyi performans için WSDL Client () nesnesini dişli bir uygulamada tutuyorsanız, bazı riskler söz konusudur. Bu riske çözüm olan clone () yöntemi, yazdırılan gibi görünen ancak gerçekten bir istisna atmayan kurtarılamaz Python 5508 hatasını atar. Kafa karıştırıcı olabilir, ama işe yarıyor. Hala en iyi Python SOAP istemcisi.


4

Basit ve işlevsel bir istemci / sunucu için destek sağlayan yeni bir kütüphane yayınladık: PySimpleSOAP . Amaçları: kullanım kolaylığı ve esneklik (sınıflar, otomatik olarak oluşturulan kod veya xml gerekli değildir), WSDL içgözlem ve üretimi, WS-I standart uyumluluğu, uyumluluk (Java AXIS, .NET ve Jboss WS dahil). Tam yığın çözümleri (XML_RPC, JSON, AMF-RPC, vb. Gibi desteklenen diğer protokolleri tamamlar) etkinleştirmek için Web2Py'ye eklenmiştir.

Birisi SABUN öğreniyorsa veya araştırmak istiyorsa, başlamak için iyi bir seçim olduğunu düşünüyorum.


2

Bence soaplib, SOAP istemcisini ('gönderen') suds lehine reddetti. Bu noktada soaplib bir web çerçevesi agnostik SOAP sunucusu ('alıcı') olmaya odaklanmıştır. Şu anda soaplib aktif olarak geliştirilmektedir ve genellikle Python SOAP posta listesinde tartışılmaktadır:

http://mail.python.org/mailman/listinfo/soap


2

In my Sonuç bu elimizde:

Sabun müşteri tarafı:

kullanımı sadece Köpük-Jurko (2016 güncellenir) köpük de korunur ve güncellenmektedir.

UPDATE 06/2017: suds-jurko kütüphanesi güncellenmedi ve görünüşte terk edildi ,

Zeep kütüphanesini test ettim ama belirteçler etrafında sınırlamalar aldım, şimdi sadece UsernameToken'i destekledim, zaman damgası belirteci oluşturmak için bir hata bildirdim ve yazar düzeltmek için kodu güncelleyin.

Zeep iyi başlıyor ve iyi belgelere sahip , bu yüzden son zamanlarda kodumdan zeep'e geçtim ve iyi çalışıyor.

Sabun sunucu tarafı:

TGWS, soaplib (test edilmemiş pysimplesoap) IMHO kullanımı ve soaplib'in seçim olması gerekir.

Saygılarımla,


Suds-jurko için iyi belgeler / örnekler var mı? depoda birkaç .rst dosyası var ancak kitaplığın nasıl kullanılacağına dair bir belge yok.
ierdna

1

Ben önerildiği gibi burada ben kendi rulo öneriyoruz. Aslında o kadar da zor değil ve bundan daha iyi Python SOAP kütüphaneleri olmamasının nedeni bu.


1

köpük oldukça iyi. SOAPpy'ı denedim ama ihtiyaç duyduğum şekilde işe yaramadı, oysa suds hemen çalıştı.




0

Im bir üretim ayarında Python 2.5.3 ile SOAPpy kullanarak.

El ile birkaç dosya SOAPpy (başlık kodu yanlış yerde olmak hakkında bir şey) düzenlemek zorunda kaldı ama bunun dışında çalıştı ve çok güvenilir yapmaya devam ediyor.


1
Aynı şeyi yaptık ve Python 2.6.3 ile SOAPpy kullanıyoruz.
Joe L.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.