Я только начал использовать Spyne и попытался использовать ComplexModel в качестве параметра для одного метода. Я в основном следовал примеру user_manager из источников со spyne < 2.99, но при вызове client.factory.create() всегда получаю ошибку типа.ComplexModel недоступен на клиенте
Пример кода, который не удается:
from spyne.application import Application
from spyne.decorator import rpc
from spyne.service import ServiceBase
from spyne.protocol.soap import Soap11
from spyne.model.primitive import String, Integer
from spyne.model.complex import ComplexModel
class DatosFac(ComplexModel):
__namespace__ = 'facturamanager.datosfac'
numero = String(pattern=r'[A-Z]/[0-9]+')
class FacturaService(ServiceBase):
@rpc(String, DatosFac, _returns=Integer)
def updateFacData(self, numero, data):
# do stuff
return 1
application = Application([FacturaService], 'facturaManager.service',
in_protocol=Soap11(validator='lxml'),
out_protocol=Soap11()
)
from spyne.server.null import NullServer
s = NullServer(application)
data = s.factory.create('DatosFac')
Если запустить этот код вы получите:
Traceback (most recent call last):
File "spyner.py", line 25, in <module>
data = s.factory.create('DatosFac')
File "/Users/marc/.pyEnvs/default/lib/python2.7/site-packages/spyne/client/_base.py", line 30, in create
return self.__app.interface.get_class_instance(object_name)
File "/Users/marc/.pyEnvs/default/lib/python2.7/site-packages/spyne/interface/_base.py", line 114, in get_class_instance
return self.classes[key]()
KeyError: 'DatosFac'
(я использовал NullServer, чтобы сделать его легче воспроизвести, но то же самое происходит через мыло + WSGI).
I amb довольно сильно застрял в этом, поскольку я не вижу, что существенно отличается от этого кода и примеров user_manager.
Что я делаю неправильно?
спасибо, МАРК
Это сработало, спасибо! ;) –