【问题标题】:Multiple namespaces in spyne SOAP web servicespyne SOAP Web 服务中的多个命名空间
【发布时间】:2016-05-24 17:09:37
【问题描述】:

我正在尝试使用 Spyne 框架和此示例代码部分在 python3 中托管 SOAP 服务:

class HelloWorldService(ServiceBase):
    @srpc(Unicode, Integer, _returns=Iterable(Unicode))
    def say_hello(name, times):
        for i in range(times):
            yield 'Hello, %s' % name
application = Application([HelloWorldService],
    tns='spyne.examples.hello',
    in_protocol=Soap11(),
    out_protocol=Soap11()
)
if __name__ == '__main__':
    # You can use any Wsgi server. Here, we chose
    # Python's built-in wsgi server but you're not
    # supposed to use it in production.
    from wsgiref.simple_server import make_server
    wsgi_app = WsgiApplication(application)
    server = make_server('0.0.0.0', 8000, wsgi_app)
    server.serve_forever()

它可以工作,但它只使用一个命名空间。

tns='spyne.examples.hello'

我可以在这一行定义多个服务:

application = Application([HelloWorldService, OtherService1, OtherService2]

但是是否可以为每个服务定义不同的命名空间?像这样的东西不起作用:

tns=['spyne.examples.hello', 'http://other.service1', 'http://other.service2']

【问题讨论】:

    标签: python soap spyne


    【解决方案1】:

    您可以为此使用WsgiMounter 类。

    from spyne.util.wsgi_wrapper import WsgiMounter
    
    app1 = Application([SomeService], tns=namespace1,
        in_protocol=Soap11(), out_protocol=Soap11())
    app2 = Application([SomeOtherService], tns=namespace2,
        in_protocol=Soap11(), out_protocol=Soap11())
    wsgi_mounter = WsgiMounter({
        'app1': app1,
        'app2': app2,
    })
    

    然后,在您的代码中传递 wsgi_mounter 对象而不是 wsgi_app:

    if __name__ == '__main__':
        from wsgiref.simple_server import make_server
        wsgi_mounter = WsgiMounter({
            'app1': app1,
            'app2': app2, 
        })
        server = make_server('0.0.0.0', 8000, wsgi_mounter)
        server.serve_forever()
    

    【讨论】:

      猜你喜欢
      • 2017-01-04
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-07
      相关资源
      最近更新 更多