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 WsgiMounter( Source )ではWsgiMounter、単一の辞書パラメーターで関数を呼び出すことができます。ディクショナリのキーはルート エンドポイントの拡張を表し、値は 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 アプリケーションがルートから提供される1 つのサーバーを構成し、からのすべてが からcreate_web_app app提供され/wwwます。(/aboutページにアクセスするには、 にルーティングしますhttp://localhost:8080/www/about)

この例create_web_appでは、アプリケーションを返しFlaskます。

于 2015-08-17T17:24:54.697 に答える