web-dev-qa-db-fra.com

Quelles bibliothèques clientes SOAP existent pour Python et où se trouve la documentation correspondante?

Je n'ai jamais utilisé SOAP auparavant et je suis un peu novice en Python. Je fais cela pour me familiariser avec les deux technologies. J'ai installé SOAPlib et j'ai essayé de lire leur documentation Client , mais je ne la comprends pas très bien. Y a-t-il autre chose que je puisse rechercher qui soit plus approprié pour être une bibliothèque client SOAP pour Python?

Edit: Juste au cas où cela aiderait, j’utilise Python 2.6.

322
damon

Mise à jour (2016):

Si vous n'avez besoin que de SOAP client, il existe une bibliothèque bien maintenue appelée zeep . Il supporte à la fois Python 2 et 3 :)


Mise à jour:

En plus de ce qui est mentionné ci-dessus, je ferai référence à la page WebServices Python qui est toujours à jour avec tous les modules activement maintenus et recommandés à SOAP et tous les autres types de services Web.


Malheureusement, pour le moment, je ne pense pas qu'il existe une "meilleure" bibliothèque Python SOAP. Chacun des courants grand public disponibles a ses propres avantages et inconvénients.

Anciennes bibliothèques:

  • SOAPy : était le "meilleur", mais n'est plus maintenu. Ne fonctionne pas sur Python 2.5+

  • ZSI : très pénible à utiliser et le développement est lent. Possède un module appelé "SOAPpy", différent de SOAPy (ci-dessus).

Bibliothèques "plus récentes":

  • SOUS : très Pythonique et facile à créer des clients SOAP utilisant WSDL. La création de serveurs SOAP est un peu plus difficile. (Ce paquet ne fonctionne pas avec Python3. Pour Python3, voir SUDS-py3)

  • SUDS-py : La version Python3 de SUDS

  • spyne : La création de serveurs est facile, la création de clients un peu plus difficile. La documentation manque quelque peu.

  • ladon : Créer des serveurs est un peu comme dans soaplib (utiliser un décorateur). Ladon expose plus d'interfaces que SOAP en même temps, sans nécessiter de code utilisateur supplémentaire.

  • pysimplesoap : très léger mais utile à la fois pour le client et le serveur - inclut une intégration de serveur web2py fournie avec web2py.

  • SOAPpy : À la différence de SOAPpy, une version abandonnée hébergée sur le lien ZSI ci-dessus, cette version a été conservée jusqu'en 2011 et semble désormais abandonnée.
  • soaplib : Bibliothèque python facile à utiliser pour écrire et appeler des services Web soap. Les services Web écrits avec soaplib sont simples, légers, fonctionnent bien avec d'autres implémentations SOAP et peuvent être déployés en tant qu'applications WSGI.
  • osa : Une bibliothèque client rapide _/facile à utiliser SOAP python.

De ce qui précède, je n’ai utilisé que personnellement SUDS, et j’ai beaucoup aimé.

382
Samat Jain

J'ai suivi le conseil des autres réponses à cette question et ai donné MOUSSE à essayer. Après l'avoir utilisé "dans la colère", je suis d'accord: SUDS est très gentil! Hautement recommandé!

J'ai eu du mal à appeler des services Web basés sur HTTPS derrière un proxy. Au moment de la rédaction de cet article, cela concerne tous les clients Python du service Web qui utilisent urllib2, je vais donc documenter la solution ici.

Le module urllib2 fourni avec python 2.6.2 et versions ultérieures n'émettra pas de CONNECT au proxy pour les sessions de proxy HTTPS-over-HTTP. Cela entraîne un long délai d'attente ou, si vous êtes chanceux, une erreur ressemblant à ceci:

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

C'était numéro 1424152 sur le traqueur de bogues Python. Il existe des correctifs attachés au rapport de bogue qui résoudront ce problème dans Python 2.x et Python 3.x. Le problème est déjà résolu .

47
sstock

J'ai eu une bonne expérience avec SUDS https://fedorahosted.org/suds

Utilisé leur TestSuite comme documentation.

19
Rajesh

SUDS est la voie à suivre, pas de doute.

10
Mike

Juste un avertissement FYI pour les personnes regardant SUDS, jusqu'à ce que ce ticket soit résolu, SUDS ne prend pas en charge la balise "choice" dans WSDL:

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

voir: balise sudus et choice

8
Doug

SUDS est facile à utiliser, mais il n'est pas garanti d'être ré-entrant. Si vous conservez l'objet WSDL Client () dans une application à threads pour améliorer les performances, des risques sont associés. La solution à ce risque, la méthode clone (), lève le bogue irrécupérable Python 5508, qui semble imprimer mais ne lève pas vraiment d'exception. Peut être déroutant, mais cela fonctionne. C'est toujours de loin le meilleur client Python SOAP.

6
user281429

Nous avons publié une nouvelle bibliothèque: PySimpleSOAP , qui prend en charge un client/serveur simple et fonctionnel. Ses objectifs sont les suivants: facilité d'utilisation et flexibilité (pas de classes, code généré automatiquement ou XML), introspection et génération WSDL, conformité au standard WS-I, compatibilité (y compris Java AXIS, .NET et Jboss WS) . Il est inclus dans Web2Py pour permettre des solutions complètes (en complément d'autres protocoles pris en charge tels que XML_RPC, JSON, AMF-RPC, etc.).

Si quelqu'un apprend SOAP ou veut en savoir plus, je pense que c'est un bon choix.

4
reingart

Je pense que soaplib a déconseillé à son client SOAP ('expéditeur') en faveur de la mousse. À ce stade, soaplib se concentre sur le fait d'être un serveur SOAP agnostique à l'infrastructure Web ("récepteur"). Actuellement, soaplib est en cours de développement et est généralement discuté dans la liste de diffusion Python SOAP:

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

2
bradallen137

Dans ma conclusion, nous avons ceci:

Savon côté client:

utiliser seulement Suds-jurko (mis à jour en 2016) la mousse est bien maintenue et mise à jour.

MISE À JOUR 06/2017: la bibliothèque suds-jurko n'est pas mise à jour et apparemment abandonné ,

J'ai testé zeep la bibliothèque mais des limitations concernant les jetons ont été prises en charge. Désormais, je ne supporte que UsernameToken. Je signale un bug pour créer un jeton d'horodatage et son auteur. mettre à jour le code pour le réparer.

Zeep commence bien et a bon documentation , donc j'ai récemment migré mon code de moussé à zeep et fonctionne bien.

Côté serveur de savon:

Nous avons TGWS, soaplib (pysimplesoap non testé), utilisation à mon humble avis et aide soaplib doit être le choix.

Meilleures salutations,

1
Cristian Salamea

Comme je l'ai suggéré ici Je vous recommande de rouler le vôtre. Ce n'est pas si difficile et je suppose que c'est la raison pour laquelle il n'y a pas de meilleures bibliothèques Python SOAP.

1
Greg

la mousse est très bonne. J'ai essayé SOAPpy mais je ne l'ai pas fait fonctionner comme je l'avais prévu, alors que la mousse a fonctionné assez rapidement.

1
Pratik Patel

J'utilise SOAPpy avec Python 2.5.3 dans un contexte de production.

J'ai dû éditer manuellement quelques fichiers dans SOAPpy (quelque chose à propos du code d'en-tête se trouvant au mauvais endroit), mais à part cela, cela fonctionnait et continue de le faire de manière très fiable.

0
carl

Cela pourrait-il aider: http://users.skynet.be/pascalbotte/rcx-ws-doc/python.htm#SOAPPY

Je l'ai trouvé en recherchant wsdl et python, avec l'être rationnel, qu'il vous faudrait une description wsdl d'un serveur SOAP pour effectuer des wrappers client utiles ....

0
Daren Thomas

Nous avions utilisé SOAPpy depuis Python Web Services , mais il semble que ZSI (même source) le remplace.

0
Kirk Strauser