it-swarm.com.de

Welche SOAP Client-Bibliotheken existieren für Python, und wo ist die Dokumentation für sie?

Ich habe noch nie SOAP verwendet und bin ein bisschen neu in Python. Ich mache das, um mich mit beiden Technologien vertraut zu machen. Ich habe SOAPlib installiert und versucht, die Client -Dokumentation zu lesen, aber ich verstehe das nicht so gut. Gibt es noch etwas, worauf ich achten kann, das besser als SOAP Client-Bibliothek für Python geeignet ist?

Bearbeiten: Nur für den Fall, dass es hilft, verwende ich Python 2.6.

322
damon

Update (2016):

Wenn Sie nur einen SOAP -Client benötigen, gibt es eine gut gepflegte Bibliothek mit dem Namen zeep . Es unterstützt sowohl Python 2 als auch 3 :)


Update:

Zusätzlich zu dem, was oben erwähnt wurde, verweise ich auf die Python WebServices Seite, die mit allen aktiv gepflegten und empfohlenen Modulen immer auf dem neuesten Stand ist [~ # ~] soap [~ # ~] und alle anderen Webservicetypen.


Leider glaube ich im Moment nicht, dass es eine "beste" Python SOAP Bibliothek gibt. Jeder der verfügbaren Mainstreams hat seine eigenen Vor- und Nachteile.

Ältere Bibliotheken:

  • SOAPy : War das "Beste", wurde aber nicht mehr gepflegt. Funktioniert nicht mit Python 2.5+

  • [~ # ~] zsi [~ # ~] : Die Verwendung ist sehr schmerzhaft und die Entwicklung ist langsam. Hat ein Modul namens "SOAPpy", das sich von SOAPy (oben) unterscheidet.

"Neuere" Bibliotheken:

  • [~ # ~] suds [~ # ~] : Sehr pythonisch und einfach zu erstellende WSDL-verbrauchende SOAP Clients. Das Erstellen von SOAP Servern ist etwas schwieriger. (Dieses Paket funktioniert nicht mit Python3. Für Python3 siehe SUDS-py3)

  • SUDS-py3 : Die Python3-Version von SUDS

  • spyne : Das Erstellen von Servern ist einfach und das Erstellen von Clients etwas anspruchsvoller. Dokumentation fehlt etwas.

  • ladon : Das Erstellen von Servern ist ähnlich wie in soaplib (mit einem Dekorateur). Ladon stellt mehr Schnittstellen als SOAP gleichzeitig zur Verfügung, ohne dass zusätzlicher Benutzercode erforderlich ist.

  • pysimplesoap : sehr leichtgewichtig, aber nützlich für Client und Server - enthält eine web2py-Serverintegration, die mit web2py geliefert wird.

  • SOAPpy : Im Unterschied zu dem aufgegebenen SOAPpy, das über den obigen ZSI-Link gehostet wird, wurde diese Version tatsächlich bis 2011 beibehalten, jetzt scheint sie auch aufgegeben zu werden.
  • soaplib : Einfach zu verwendende python Bibliothek zum Schreiben und Aufrufen von Soap-Webdiensten. Mit soaplib geschriebene Webservices sind einfach, leichtgewichtig, funktionieren gut mit anderen SOAP Implementierungen und können als WSGI-Anwendungen bereitgestellt werden.
  • osa : Eine schnell und einfach zu verwendende SOAP python Client-Bibliothek.

Davon habe ich SUDS nur persönlich benutzt und es hat mir sehr gut gefallen.

382
Samat Jain

Ich folgte dem Rat anderer Antworten auf diese Frage und versuchte es mit SUDS . Nachdem ich es "im Zorn" benutzt habe, muss ich zustimmen: SUDS ist sehr schön! Sehr empfehlenswert!

Beim Aufrufen von HTTPS-basierten Webdiensten hinter einem Proxy sind Probleme aufgetreten. Zum Zeitpunkt des Schreibens betrifft dies alle Python Web-Service-Clients, die urllib2 Verwenden. , also werde ich die Lösung hier dokumentieren.

Das Modul urllib2, Das mit python 2.6.2 und niedriger geliefert wird, gibt für HTTPS-over-HTTP-Proxy-Sitzungen kein CONNECT an den Proxy aus in einer langen Auszeit oder wenn Sie Glück haben, ein Fehler, der so aussieht:

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

Dies war issue1424152 auf dem Python Bug-Tracker. Dem Fehlerbericht sind Patches beigefügt, die dies in Python= 2 beheben. x und Python 3.x. Das Problem ist bereits behoben .

47
sstock

Ich hatte gute Erfahrungen mit SUDS https://fedorahosted.org/suds

Verwendete ihre TestSuite als Dokumentation.

19
Rajesh

SUDS ist der richtige Weg, keine Frage.

10
Mike

Nur eine Warnung zu Ihrer Information für Leute, die SUDS betrachten, bis dieses Ticket aufgelöst ist, unterstützt SUDS das "choice" -Tag in der WSDL nicht:

https://fedorahosted.org/suds/ticket/342

siehe: suds und choice tag

8
Doug

SUDS ist einfach zu bedienen, es kann jedoch nicht garantiert werden, dass es erneut angemeldet wird. Wenn Sie das WSDL Client () -Objekt für eine bessere Leistung in einer Thread-App behalten, besteht ein gewisses Risiko. Die Lösung für dieses Risiko, die clone () -Methode, löst den nicht behebbaren Fehler Python 5508 aus, der zu drucken scheint, aber nicht wirklich eine Ausnahme auslöst. Kann verwirrend sein, aber es funktioniert. Es ist immer noch mit Abstand der beste Python SOAP client.

6
user281429

Wir haben eine neue Bibliothek veröffentlicht: PySimpleSOAP , die Unterstützung für einfache und funktionierende Clients/Server bietet. Die Ziele sind: Benutzerfreundlichkeit und Flexibilität (keine Klassen, automatisch generierter Code oder XML sind erforderlich), WSDL-Introspektion und Generierung, WS-I-Standardkonformität, Kompatibilität (einschließlich Java AXIS, .NET und Jboss WS) . Es ist in Web2Py enthalten, um Full-Stack-Lösungen zu ermöglichen (die andere unterstützte Protokolle wie XML_RPC, JSON, AMF-RPC usw. ergänzen).

Wenn jemand SOAP lernt oder dies untersuchen möchte, ist es meiner Meinung nach eine gute Wahl, damit zu beginnen.

4
reingart

Ich glaube, soaplib hat seinen SOAP client ('sender') zugunsten von suds abgelehnt. An diesem Punkt konzentriert sich soaplib darauf, ein Webframework-Agnostiker zu sein SOAP server) ('receiver'). Derzeit befindet sich soaplib in der aktiven Entwicklung und wird normalerweise in der Python SOAP Mailingliste:

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

2
bradallen137

Im my Fazit haben wir folgendes:

Soap Client Seite:

verwende nur Suds-jurko (aktualisiert 2016) suds ist gut gepflegt und aktualisiert.

UPDATE 06/2017: suds-jurko Bibliothek wird nicht aktualisiert und anscheinend aufgegeben ,

Ich habe die zeep Bibliothek getestet, habe aber Einschränkungen in Bezug auf Tokens, unterstütze jetzt nur UsernameToken. Ich berichte einen Bug , um ein Timestamp-Token zu erstellen und den Code zu aktualisieren, um das Problem zu beheben.

Zeep fängt gut an und hat gut Dokumentation , also habe ich kürzlich meinen Code von suds auf zeep migriert und funktioniert gut.

Soap-Server-Seite:

Wir haben TGWS, soaplib (pysimplesoap nicht getestet) IMHO verwenden und helfen, soaplib muss die Wahl sein.

Freundliche Grüße,

1

Wie ich vorgeschlagen habe hier Ich empfehle Ihnen, Ihre eigenen Rollen. Es ist eigentlich nicht so schwierig und ich vermute, das ist der Grund, warum es keine besseren Python SOAP Bibliotheken gibt.

1
Greg

schaum ist ziemlich gut. Ich habe SOAPpy ausprobiert, habe es aber nicht so zum Laufen gebracht, wie ich es brauchte, während die Schaumbildung ziemlich sofort funktionierte.

1
Pratik Patel

Ich benutze SOAPpy mit Python 2.5.3 in einer Produktionseinstellung.

Ich musste einige Dateien in SOAPpy manuell bearbeiten (etwas über den falschen Header-Code), aber ansonsten hat es funktioniert und funktioniert es auch weiterhin sehr zuverlässig.

0
carl

Könnte dies helfen: http://users.skynet.be/pascalbotte/rcx-ws-doc/python.htm#SOAPPY

Ich fand es, indem ich nach wsdl und python suchte, mit dem rationalen Wesen, dass Sie eine wsdl-Beschreibung eines SOAP) -Servers benötigen würden, um einen nützlichen Client auszuführen verpackungen ....

0
Daren Thomas

Wir hatten SOAPpy von Python Web Services verwendet, aber es scheint, dass ZSI (dieselbe Quelle) es ersetzt.

0
Kirk Strauser