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 模块的名称。根据需要,更改主机和端口。