¿Qué bibliotecas de cliente SOAP existen para Python y dónde está la documentación para ellas? [cerrado]


Nunca he usado SOAP antes y soy nuevo en Python. Estoy haciendo esto para familiarizarme con ambas tecnologías. He instalado SOAPlib y he intentado leer la documentación de su Cliente , pero no lo entiendo demasiado bien. ¿Hay algo más que pueda investigar que sea más adecuado para ser una biblioteca de cliente SOAP para Python?

Editar: Por si ayuda, estoy usando Python 2.6.

Author: osiris, 2008-10-15

14 answers

Actualizar (2016):

Si solo necesita un cliente SOAP, hay una biblioteca bien mantenida llamada zeep. Es compatible con Python 2 y 3:)


Actualizar:

Además de lo mencionado anteriormente, me referiré a Python WebServices la página que siempre está actualizada con todos los módulos activamente mantenidos y recomendados para SOAP y todos los demás tipos de servicios web.


Desafortunadamente, en el momento, no creo que haya una" mejor " biblioteca de Python SOAP. Cada uno de los principales disponibles tiene sus propios pros y contras.

Bibliotecas antiguas:

  • SOAPy : Era el "mejor", pero ya no se mantenía. No funciona en Python 2.5+

  • ZSI : Muy doloroso de usar, y el desarrollo es lento. Tiene un módulo llamado "SOAPpy", que es diferente a SOAPy (arriba).

" Más reciente" bibliotecas:

  • SUDS : Muy pitónico y fácil de crear clientes SOAP que consumen WSDL. Crear servidores SOAP es un poco más difícil. (Este paquete no funciona con python3.)

  • Spyne : Crear servidores es fácil, crear clientes es un poco más difícil. Falta algo de documentación.

  • Ladon : Crear servidores es muy parecido a soaplib (usando un decorador). Ladon expone más interfaces que SOAP al mismo tiempo sin necesidad de código de usuario adicional.

  • Pysimplesoap : muy ligero pero útil tanto para cliente como para servidor - incluye una integración de servidor web2py que se incluye con web2py.

  • SOAPpy : A diferencia del SOAPpy abandonado que está alojado en el enlace ZSI anterior, esta versión se mantuvo hasta 2011, ahora parece estar abandonada también.
  • soaplib : Biblioteca python fácil de usar para escribir y llamar servicios web soap. Los servicios web escritos con soaplib son simples, livianos, funcionan bien con otras implementaciones SOAP y se pueden implementar como aplicaciones WSGI.
  • osa: Una biblioteca de cliente SOAP python rápida/delgada y fácil de usar.

De lo anterior, solo he usado espuma personalmente, y me gustó mucho.

 370
Author: Samat Jain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-15 00:20:15

Seguí el consejo de otras respuestas a esta pregunta y le di SUDS una oportunidad. Después de usarlo "en ira" debo estar de acuerdo: SUDS es muy agradable! Muy recomendable!

Me encontré con problemas para llamar a servicios web basados en HTTPS desde detrás de un proxy. En el momento de escribir esto, esto afecta a todos los clientes de servicio web Python que usan urllib2, así que documentaré la solución aquí.

El módulo urllib2 que se envía con python 2.6.2 y versiones anteriores no emitirá un CONNECT al proxy para sesiones HTTPS sobre HTTP proxy. Esto resulta en un tiempo de espera largo, o si tiene suerte, un error que se parece a:

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

Esto fue issue1424152 en el rastreador de errores de Python. Hay parches adjuntos al informe de error que solucionarán esto en Python 2.x y Python 3.x. El problema ya está solucionado.

 46
Author: sstock,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-07 15:01:26

Tuve una buena experiencia con la espuma https://fedorahosted.org/suds

Utilizó su TestSuite como documentación.

 19
Author: Rajesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-15 20:04:59

SUDS es el camino a seguir, no hay duda al respecto.

 10
Author: Peter Mortensen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-14 23:04:53

Solo una advertencia de información para las personas que buscan SUDS, hasta que se resuelva este ticket, SUDS no admite la etiqueta "choice"en WSDL:

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

Véase: suds y etiqueta de elección

 8
Author: Doug,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:47:36

SUDS es fácil de usar, pero no se garantiza que sea reentrante. Si estás manteniendo el objeto WSDL Client() en una aplicación enhebrada para un mejor rendimiento, hay algún riesgo involucrado. La solución a este riesgo, el método clone (), lanza el error irrecuperable Python 5508, que parece imprimir pero no lanzar una excepción. Puede ser confuso, pero funciona. Sigue siendo, con mucho, el mejor cliente de Python SOAP.

 6
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-25 17:48:04

Lanzamos una nueva biblioteca: PySimpleSOAP, que proporciona soporte para cliente/servidor simple y funcional. Los objetivos de Ti son: facilidad de uso y flexibilidad (no se requieren clases, código autogenerado o xml), introspección y generación de WSDL, cumplimiento del estándar WS-I, compatibilidad (incluyendo Java AXIS,. NET y Jboss WS). Se incluye en Web2Py para habilitar soluciones full-stack (complementando otros protocolos soportados como XML_RPC, JSON, AMF-RPC, etc.).

Si alguien es aprender JABÓN o querer investigarlo, creo que es una buena opción para empezar.

 4
Author: reingart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-07 01:00:14

Creo que soaplib ha desaprobado su cliente SOAP ('sender') a favor de suds. En este punto soaplib se centra en ser un servidor SOAP agnóstico del marco web ('receiver'). Actualmente soaplib está en desarrollo activo y generalmente se discute en la lista de correo de Python SOAP:

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

 2
Author: bradallen137,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-31 16:18:43

Como sugerí aquí Te recomiendo que hagas el tuyo. En realidad no es tan difícil y sospecho que esa es la razón por la que no hay mejores bibliotecas de Python SOAP por ahí.

 1
Author: Greg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:34:59

Suds es bastante bueno. Intenté SOAPpy pero no conseguí que funcionara de la manera que necesitaba, mientras que la espuma funcionó casi de inmediato.

 1
Author: Pratik Patel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-24 02:31:46

En mi conclusión, tenemos esto:

Lado del cliente Soap:

utilizar únicamente Suds-jurko (actualizado en 2016) suds está bien mantenido y actualizado.

ACTUALIZACIÓN 06/2017: la biblioteca suds-jurko no se actualiza y aparentemente abandonada ,

Probé la biblioteca zeep pero tengo limitaciones en torno a los tokens, ahora solo soporte UsernameToken, informo de un error para crear token de marca de tiempo y actualización de autor el código para arreglarlo.

Zeep comienza bien y tiene buena documentación , por lo que recientemente migré mi código de suds a zeep y funciona bien.

Servidor Soap:

Tenemos TGWS, soaplib (pysimplesoap no probado) uso en mi humilde opinión y ayuda soaplib debe ser la elección.

Saludos cordiales,

 1
Author: Cristian Salamea,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-20 14:51:50

Podría esto ayudar: http://users.skynet.be/pascalbotte/rcx-ws-doc/python.htm#SOAPPY

Lo encontré al buscar wsdl y python, con el ser racional, que necesitaría una descripción wsdl de un servidor SOAP para hacer cualquier envoltura de cliente útil....

 0
Author: Daren Thomas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-15 19:56:53

Habíamos usado SOAPpy de Python Web Services, pero parece que ZSI (misma fuente) lo está reemplazando.

 0
Author: Kirk Strauser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-15 19:59:16

Estoy usando SOAPpy con Python 2.5.3 en una configuración de producción.

Tuve que editar manualmente un par de archivos en SOAPpy (algo sobre el código de encabezado que está en el lugar equivocado), pero aparte de eso funcionó y continúa haciéndolo de manera muy confiable.

 0
Author: carl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-18 03:29:07