gpt4 book ai didi

python - 在 python 中部署多个 web 服务,即多个 wsdl 文件

转载 作者:太空狗 更新时间:2023-10-30 02:32:04 24 4
gpt4 key购买 nike

我正在使用基于 this example 的 Spyne 在 python 中创建 Web 服务.但是,我所有的服务都合并到一个位于 http://localhost:8000/?wsdl 的 wsdl 文件中。我正在寻找另一种方法在单个 wsdl 文件中分别部署每个 Web 服务,例如http://localhost:8000/service1/?wsdlhttp://localhost:8000/service2?wsdl

最佳答案

Spyne 有一个 WsgiMounter 类:

from spyne.util.wsgi_wrapper import WsgiMounter

app1 = Application([SomeService], tns=tns,
in_protocol=Soap11(), out_protocol=Soap11())
app2 = Application([SomeOtherService], tns=tns,
in_protocol=Soap11(), out_protocol=Soap11())
wsgi_app = WsgiMounter({
'app1': app1,
'app2': app2,
})

现在您可以像传递 WsgiApplication 实例一样将 wsgi_app 传递给您正在使用的 Wsgi 实现。

您的 Wsgi 实现肯定也有类似的功能,您也可以使用它以防万一您需要为根请求提供一些服务,而不是空的 404 请求。

可以在以下位置找到最新的完整示例:https://github.com/plq/spyne/blob/master/examples/multiple_protocols/server.py

请注意,您不能将一个 Service 类用于多个应用程序。如果你必须这样做,你可以这样做:

def SomeServiceFactory():
class SomeService(ServiceBase):
@rpc(Unicode, _returns=Unicode)
def echo_string(ctx, string):
return string
return SomeService

并对每个 Application 实例使用 SomeServiceFactory() 调用。

例如

app1 = Application([SomeServiceFactory()], tns=tns,
in_protocol=Soap11(), out_protocol=Soap11())
app2 = Application([SomeServiceFactory()], tns=tns,
in_protocol=Soap11(), out_protocol=Soap11())

希望对您有所帮助。

关于python - 在 python 中部署多个 web 服务,即多个 wsdl 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20275836/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com