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

StackOverflow https://stackoverflow.com/questions/206154

  •  03-07-2019
  •  | 
  •  

Pregunta

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 su Documentación del Cliente , pero no lo entiendo muy bien. ¿Hay algo más que pueda ver que sea más adecuado para ser una biblioteca de SOAP Client para Python?

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

¿Fue útil?

Solución

Actualización (2016):

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


Actualización:

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


Lamentablemente, en este momento, no creo que haya un " mejor " Libreria de Python SOAP. Cada uno de los principales disponibles tiene sus propias ventajas y desventajas.

Bibliotecas más antiguas:

  • SOAPY : fue el " mejor; " Pero ya no se mantiene. 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 Pythonic, y fácil de crear clientes SOAP que consuman WSDL. Crear servidores SOAP es un poco más difícil. (Este paquete no funciona con Python3. Para Python3 vea SUDS-py3)

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

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

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

  • pysimplesoap : muy ligero pero útil tanto para el cliente como para el servidor. Incluye un integración del servidor web2py que se envía con web2py.

  • SOAPpy : Distinta del SOAPpy abandonado que se encuentra en el enlace de ZSI anterior, esta versión realmente se mantuvo Hasta 2011, ahora parece que también está abandonado.
  • soaplib : biblioteca de python fácil de usar para escribir y llamar a los servicios web del jabón. Los servicios web escritos con soaplib son simples, ligeros, funcionan bien con otras implementaciones de SOAP y pueden implementarse como aplicaciones WSGI.
  • osa : una biblioteca de clientes SOAP python rápida y fácil de usar.

De lo anterior, solo he usado SUDS personalmente, y me ha gustado mucho.

Otros consejos

Seguí el consejo de otras respuestas a esta pregunta y probé SUDS . Después de usarlo " en cólera " Debo estar de acuerdo: ¡SUDS es muy agradable! Muy recomendable!

Me encontré con problemas al llamar a servicios web basados ??en HTTPS desde detrás de un proxy. En el momento de escribir este artículo, esto afecta a todos clientes de servicios web de Python que usan urllib2 , por lo 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 las sesiones HTTPS-over-HTTP-proxy. Esto se traduce en un largo tiempo de espera, o si tiene suerte, aparece un error:

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

Esto fue número1424152 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 .

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

Usó su TestSuite como documentación.

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

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

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

ver: suds y etiqueta de elección

SUDS es fácil de usar, pero no se garantiza que sea reingresante. Si mantiene el objeto WSDL Client () en una aplicación con hilos para un mejor rendimiento, existe cierto riesgo. La solución a este riesgo, el método clone (), lanza el error irrecuperable de Python 5508, que parece imprimir pero no lanzar una excepción. Puede ser confuso, pero funciona. Todavía es, por mucho, el mejor cliente SOAP de Python.

Lanzamos una nueva biblioteca: PySimpleSOAP , que brinda soporte para clientes simples y funcionales /servidor. Sus objetivos son: facilidad de uso y flexibilidad (no se requieren clases, código generado automáticamente o xml), introspección y generación de WSDL, conformidad con el estándar WS-I, compatibilidad (incluido Java AXIS, .NET y Jboss WS). Se incluye en Web2Py para habilitar soluciones de pila completa (complementando 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.

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

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

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

la espuma es bastante buena. Intenté SOAPpy, pero no conseguí que funcionara de la manera que necesitaba, mientras que la espuma funcionó de manera bastante inmediata.

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 abandonado ,

Probé la biblioteca zeep pero tengo limitaciones en cuanto a tokens, por ahora solo soporta UsernameToken, i informe un error para crear el token de marca de tiempo y el autor actualice el código para corregirlo.

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

Lado del servidor de jabón:

Tenemos TGWS, soaplib (pysimplesoap no probado) El uso IMHO y la ayuda soaplib debe ser la opción.

Saludos cordiales,

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

Lo encontré buscando wsdl y python , con el ser racional, que necesitarías una descripción de wsdl de un servidor SOAP para hacer cualquier envoltorio útil del cliente. ...

Usamos SOAPpy de Servicios web de Python , pero parece que ZSI (la misma fuente) es reemplazándolo.

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 acerca de que el código del encabezado está en el lugar equivocado) pero aparte de eso, funcionó y continúa haciéndolo de manera muy confiable.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top