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


333

Nunca he usado SOAP antes y soy algo 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 SOAP Client para Python?

Editar: en caso de que ayude, estoy usando Python 2.6.


1
¿ Tiene que ser SOAP, como el uso de servicios web preexistentes? El xmlrpclib de Python es muy simple de usar y he migrado nuestros servicios SOAP a XMLRPC con él.
Kirk Strauser

26
A veces, uno solo quiere conectarse al servicio que SOLO se proporciona a través de SOAP, así que sí, una buena lib de SOAP de python es algo que tarde o temprano necesitará. Uno no va a tener alguna posibilidad de convencer proveedor de servicios para reemplazar SOAP con algo "más limpia" ...
rombarcz

34
¿Alguien puede proporcionar una actualización relevante en 2011? Aparentemente, nadie puede volver a hacer esta pregunta.
Marcin

1
FYI: abrí una publicación similar que apunta SOAP para Python 3 : stackoverflow.com/questions/7817303/…
gecco

55
Cualquier persona que visite esta pregunta, vote para volver a abrirla para que la información pueda permanecer actualizada / se pueden publicar nuevas respuestas.
ocodo

Respuestas:


388

Actualización (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 la página de Python WebServices que siempre está actualizada con todos los módulos recomendados y mantenidos activamente para SOAP y todos los demás tipos de servicios web.


Desafortunadamente, por 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 más antiguas:

  • SOAPy : Fue el "mejor", pero ya no se mantuvo. 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 de SOAPy (arriba).

Bibliotecas "más nuevas":

  • SUDS : Muy Pythonic, 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. Para Python3 ver SUDS-py3)

  • SUDS-py3 : la versión Python3 de SUDS

  • Spyne : Crear servidores es fácil, crear clientes es un poco más desafiante. 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 el cliente como para el 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 en realidad hasta 2011, ahora parece estar abandonada también.
  • soaplib : biblioteca python fácil de usar para escribir y llamar a los servicios web de soap. Los servicios web escritos con soaplib son simples, livianos, funcionan bien con otras implementaciones SOAP y pueden implementarse como aplicaciones WSGI.
  • osa : una biblioteca de cliente SOAP python rápida / delgada fácil de usar.

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


2
SOAPy y SOAPpy son realmente diferentes. He editado para aclarar y convertí la publicación en una wiki comunitaria.
Samat Jain

17
+1 para SUDS, ¡gran biblioteca! Me encontré con problemas al usar SUDS con los servicios web HTTPS detrás de un proxy. Resulta que es un urllib2problema conocido de Python . Vea mi respuesta para más detalles.
sstock

44
Probé SUD, pero entró en un bucle infinito al abrir un WSDL; entonces Python arrojó un error de límite de recursión. Encontré este boleto abierto con respecto al problema: fedorahosted.org/suds/ticket/239 Aparentemente, este fue un error de biblioteca que se rompió hace 3 años, y aún no se ha solucionado.
Botones840

11
Hay una bifurcación mantenida de SUDS en bitbucket.org/jurko/suds
Sjaak Trekhaak

1
Hoy comencé a usar SUDS para obtener datos solamente. Manejó una autenticación básica de apikey en los encabezados de jabón sin ningún problema, y ​​las respuestas fueron bastante fáciles de analizar. La documentación también era hada decente.
sacarina

47

Seguí el consejo de otras respuestas a esta pregunta y probé SUDS . Después de usarlo "con ira", debo estar de acuerdo: ¡SUDS es muy agradable! ¡Muy recomendable!

Tuve problemas para llamar a los servicios web basados ​​en HTTPS desde detrás de un proxy. Al momento de escribir esto, esto afecta a todos los clientes de servicios web de Python que usan urllib2, por lo que documentaré la solución aquí.

El urllib2módulo que se envía con python 2.6.2 y versiones posteriores no emitirá un CONNECTproxy para las sesiones HTTPS-over-HTTP-proxy. Esto da como resultado un tiempo de espera prolongado o, si tiene suerte, un error similar al siguiente:

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

Este fue el problema 1424152 en el rastreador de errores de Python. Hay parches adjuntos al informe de errores que solucionarán esto en Python 2.xy Python 3.x. El problema ya está solucionado .


Lo acabo de instalar y, aunque soy totalmente nuevo en Python, me pareció muy intuitivo y pude enviar solicitudes SUDS en cuestión de minutos. ¡La biblioteca es genial!
Leonid

1
¿Te importa actualizar este? Pregunto porque hice clic en el enlace y se solucionó el error.
tshepang

3
Es una pena que ya no se mantenga
Paul

Para nosotros, la espuma también funciona bien. Sin embargo, es muy lenta. ¡Recuperar un archivo de jabón xml lleva 0,5 segundos, y procesarlo lleva 5 segundos en una máquina de doble núcleo!
TjerkW


19

Tuve buena experiencia con SUDS https://fedorahosted.org/suds

Usó su TestSuite como documentación.


1
¡SUDS es increíble! realmente fácil de usar, buenos documentos, ¡cosas geniales!
Sander Versluys

1
Horquilla mantenida, compatible con python3: suds-jurko . pip install suds-jurko
laffuste

Estoy tratando de llamar a la API de jabón asíncrono con espuma, funciona bien pero no obtengo ninguna respuesta, ¿alguien puede ayudarme en eso? stackoverflow.com/questions/39227719/...
Vikram Singh Chandel

10

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


55
Y también falla en una gran cantidad de archivos WSDL. Para respaldar esa afirmación, por ejemplo, las API de mapas de Bing, algunos de estos fallan y la espuma no puede analizarlos.

3
Encontré que SUDS admite puntos finales SSL.
leonigmig


6

SUDS es fácil de usar, pero no se garantiza que sea reentrante. Si mantiene el objeto WSDL Client () en una aplicación con subprocesos para un mejor rendimiento, hay algunos riesgos involucrados. La solución a este riesgo, el método clone (), arroja el error irrecuperable Python 5508, que parece imprimirse pero en realidad no arroja una excepción. Puede ser confuso, pero funciona. Sigue siendo, con mucho, el mejor cliente de Python SOAP.


4

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

Si alguien está aprendiendo SOAP o quiere investigarlo, creo que es una buena opción para comenzar.


2

Creo que soaplib ha desaprobado a su cliente SOAP ('remitente') en favor de la espuma. En este punto, soaplib se centra en ser un servidor SOAP agnóstico de marco web ('receptor'). Actualmente, soaplib se encuentra en desarrollo activo y generalmente se trata en la lista de correo Python SOAP:

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


2

En mi conclusión tenemos esto:

Lado del cliente de jabón:

use solo Suds-jurko (actualizado 2016) la espuma está bien mantenida y actualizada.

ACTUALIZACIÓN 06/2017: la biblioteca suds-jurko no está actualizada y aparentemente abandonada ,

Probé zeep biblioteca, pero tengo limitaciones alrededor de fichas, por ahora sólo admite UsernameToken, puedo informar de un error al crear marca de tiempo de actualización de fichas y autor del código para solucionarlo.

Zeep comienza bien y tiene buena documentación , así que recientemente migré mi código de espuma a zeep y funciona bien.

Lado del servidor de jabón:

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

Atentamente,


¿Hay buena documentación / muestras para Suds-jurko? en el repositorio hay algunos archivos .rst pero no mucha documentación de cómo usar la biblioteca.
ierdna

1

Como sugerí aquí, le recomiendo que haga el suyo. En realidad no es tan difícil y sospecho que esa es la razón por la que no hay mejores bibliotecas Python SOAP.


1

La espuma es bastante buena. Intenté SOAPpy pero no pude que funcionara de la manera que necesitaba, mientras que la espuma funcionó casi de inmediato.




0

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 del encabezado en el lugar incorrecto) pero aparte de eso funcionó y continúa haciéndolo de manera muy confiable.


1
Hicimos lo mismo y estamos usando SOAPpy con Python 2.6.3.
Joe L.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.