如何在spyne中定义复杂模型?

问题描述 投票:0回答:1
soap spyne
1个回答
0
投票
from spyne import Application, rpc, ServiceBase, ComplexModel, Unicode, XmlAttribute
from spyne.protocol.soap import Soap11
from spyne.server.wsgi import WsgiApplication

class StartupNotification(ComplexModel):
    mac_address = Unicode(attribute=True)
    notification_ID = Unicode(attribute=True)
    serverTask_ID = Unicode(attribute=True)
    timestamp = Unicode(attribute=True)
    ip_address = Unicode(attribute=True)
    xml_version = Unicode(attribute=True)
    paramset_version = Unicode(attribute=True)

class NotificationMessage(ComplexModel):
    startup_notification = StartupNotification

class BaSSService(ServiceBase):
    @rpc(NotificationMessage, _returns=Unicode, _body_style='bare')
    def notification_message(self, notification):
        print(notification.startup_notification)
        return 'OK'

application = Application([BaSSService],
                          tns='http://www.aglaia-gmbh.de/xml/BaSS_SOAPd/',
                          in_protocol=Soap11(validator='soft'),
                          out_protocol=Soap11()
                          )

wsgi_app = WsgiApplication(application)

您可以使用以下命令在 WSGI 服务器(例如,gunicorn)上启动 Spyne 服务:

gunicorn -w 4 -b 0.0.0.0:8000 your_module:wsgi_app

your_module
替换为包含 Spyne 服务的 Python 模块的名称。根据需要,更改主机和端口。

© www.soinside.com 2019 - 2024. All rights reserved.