1

spyne.Application如果我有一个 spyne 应用程序从一个对象继承并通过它提供服务,spyne.WsgiApplication我将如何将自定义 HTTP 端点添加到 WSGI 服务器,例如//info

基本结构反映了spyne.io上的结构

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], # <--- spyne.Application
    tns='spyne.examples.hello',
    in_protocol=Soap11(validator='lxml'),
    out_protocol=JsonDocument()
)

if __name__ == '__main__':
    from wsgiref.simple_server import make_server

    wsgi_app = WsgiApplication(application)    # <--- spyne.WsgiApplication
    server = make_server('0.0.0.0', 8000, wsgi_app)
    server.serve_forever()
4

1 回答 1

1

spyne导入from spyne.util.wsgi_wrapper import WsgiMounterSourceWsgiMounter )中,您可以使用单个字典参数调用该函数。字典的键代表根端点的扩展,值是与 WSGI 兼容的应用程序。

例如:

def create_web_app(config):
    app = Flask(__name__)

    @app.route('/about')
    def about():
        return 'About Page'

    return app

wsgi_app = WsgiMounter({
    '': SpyneAppWsgi(app),
    'www': create_web_app(config)
})

..将配置一台服务器,其中spyne 应用程序将从根目录提供服务,所有create_web_app app来自/www. (要访问该/about页面,您将路由到http://localhost:8080/www/about

在此示例中create_web_app返回一个Flask应用程序。

于 2015-08-17T17:24:54.697 回答