Всем доброго времени суток!
В данный момент занят написанием SOAP-сервера с использованием spyne (дальнейшее развитие soaplib). Код сервера на данный момент примерно следующий:
from spyne.application import Application
from spyne.decorator import rpc
from spyne.service import ServiceBase
from spyne.model import String, Integer, xml, ComplexModel
from spyne.protocol.soap import Soap11
from spyne.server.wsgi import WsgiApplication
class MBPService(ServiceBase):
@rpc(xml, _returns=xml) # определяет тип и количество принимаемых объектов и тип возвращаемого значения
def command(ctx, arg1):
print '========='
print arg1
print '========='
return arg1
application = Application([MBPService], 'localhost',
in_protocol=Soap11(validator='lxml'),
out_protocol=Soap11())
wsgi_application = WsgiApplication(application)
if __name__ == '__main__':
# далее поднимается наш сервер
from wsgiref.simple_server import make_server
print 'start server'
server = make_server('127.0.0.1', 6363, wsgi_application)
server.serve_forever()
Но при попытке запустить на исполнение
Traceback (most recent call last):
File "/home/user/test2/server.py", line 12, in <module>
class MBPService(ServiceBase):
File "/home/user/test2/spyne/service.py", line 53, in __init__
descriptor = v(_default_function_name=k)
File "/home/user/test2/spyne/decorator.py", line 341, in explain_method
_no_ctx, _no_self, _args, body_style_str)
File "/home/user/test2/spyne/decorator.py", line 115, in _produce_input_message
namespace=ns, members=in_params)
File "/home/user/test2/spyne/model/complex.py", line 1092, in produce
'_type_info': TypeInfo(members),
File "/home/user/test2/spyne/util/meta.py", line 66, in preparing_constructor
return constructor(cls, name, bases, attributes)
File "/home/user/test2/spyne/model/complex.py", line 587, in __new__
_sanitize_type_info(cls_name, _type_info, _type_info_alt)
File "/home/user/test2/spyne/model/complex.py", line 490, in _sanitize_type_info
raise ValueError( (cls_name, k, v) )
ValueError: ('command', 'arg1', None)
Просмотр исходного кода мне лично не помог - запутался еще больше. Может быть сталкивался кто-то с подобной проблемой?
Вообще изначальная задача это получить XML для парсинга и отправить свой xml в качестве ответа. Заранее благодарю за помощь