Crea un servidor de soap python basado en wsdl

Tengo un archivo wsdl que describe el cliente-servidor de comunicaciones en un producto Java. Estoy implementando un nuevo servidor basado en Python que implementará los mismos servicios.

¿Conoce algún método para crear el código del servidor Python basado en el wsdl, que no requiera que escriba todos los tipos complejos involucrados?

Además, ¿qué Api me recomiendan?

Cuando se trata de la compatibilidad con SOAP, desafortunadamente Python ya no incluye “baterías incluidas”. El soporte en el lado del cliente es aceptable, pero en el lado del servidor usted está básicamente solo.

Es posible que desee ver lo siguiente para empezar:

http://wiki.python.org/moin/WebServices

http://pywebsvcs.sourceforge.net/

http://doughellmann.com/2009/09/01/evaluating-tools-for-developing-with-soap-in-python.html

Si realmente quieres seguir esta ruta, parece que ZSI es la herramienta a utilizar, aunque tengo mis dudas de que funcionará con la última distribución de Python 2.x.

Usando Python 2.6.6, intenté usar ZSI 2.0 para construir un servicio web a partir del WSDL. Recibí algunas advertencias de “el módulo ha sido desaprobado” al generar el código con wsdl2py y wsdl2dispatch , tuve que instalar PyXML por separado y hackear mi sys.path solo para que se resolviera primero o, de lo contrario, obtendré “el módulo ext.reader no existe” y solo para terminar con un error “ZSI: EvaluateException Got for for nillable (False), minOccurs (1)” error en un “Hello world!” básico. WS con un elemento requerido.

Cambiado a ZSI 2.1_a1 que ya no necesita PyXML y wsdl2py hace todo (lo que wsdl2dispatch hizo para 2.0) pero aún terminó en un callejón sin salida con el error del elemento “ZSI: EvaluateException Got None for nillable (False), minOccurs (1) .

La experiencia no fue muy divertida, pero me bastó para formarme una opinión acerca de lo que Python tiene para ofrecer a los servicios web SOAP … lo que no es mucho (y eso no fue nada del otro mundo, como en WS-* especificaciones ). YMMV!

EDITAR: Recientemente me topé con esta pregunta de SO , y aunque estaba orientada frente a una solución de cliente, también menciona algunas bibliotecas para crear servicios SOAP.

Esta pregunta no ha recibido suficiente atención.

La respuesta actualmente aceptada es buena, pero su respuesta es “no”. ¿Realmente no hay una solución general y de mantenimiento razonable?

Desafortunadamente, no creo que la respuesta negativa se deba a la falta de atención a la pregunta. Realmente no hay soporte para WSDL en Python. Si desea evitar la complejidad de crear su propio sobre de soap desde cero, lo único que puedo recomendar es crear un sobre de muestra utilizando cualquiera de las muchas herramientas de servicios web de soap (por ejemplo, soapui) y luego usarlo como una cadena de plantilla (I saber, horrible) en tu código python

ACTUALIZACIÓN usted podría utilizar spyne . Es un kit de herramientas RPC de Python que, entre otros protocolos, admite SOAP. Creará el WSDL por usted, pero si su objective es implementar el servicio descrito por el WSDL que ya tiene, entonces tendrá que afinar su servicio spyne (escrito en python) hasta que el WSDL generado coincida con el original.