7

Tornadoフレームワークで、同じIOLoopに複数のアプリケーションを登録できるかどうか疑問に思っていますか?

何かのようなもの

application1 = web.Application([
    (r"/", MainPageHandler),
])
http_server = httpserver.HTTPServer(application1)
http_server.listen(8080)

application2 = web.Application([
    (r"/appli2", MainPageHandler2),
])
http_server2 = httpserver.HTTPServer(application2)
http_server2.listen(8080)

ioloop.IOLoop.instance().start()

基本的に、私はWebアプリを次のように構成しようとしています。

  1. 機能的なアプリケーションは分離されています
  2. 同じ目的(たとえば、admin / monitor / etc)を持つ複数のハンドラーが各Webアプリで可能です
4

1 に答える 1

10

簡単なことは、アプリケーションを別のポートにバインドする場合です。

...
http_server = httpserver.HTTPServer(application1)
http_server.listen(8080)    # NOTE - port 8080

...
http_server2 = httpserver.HTTPServer(application2)
http_server2.listen(8081)   # NOTE - port 8081

ioloop.IOLoop.instance().start()

これは、トルネードが簡単にする基本ケースです。課題は、URIレベルでアプリケーションにルーティングすることにより、設計の境界を越えていることです。つまり、各アプリケーションは、アプリケーションによって要求されたすべてのURIを担当します。

それらすべてが実際にポートではなくURIレベルでサービスされる必要がある場合は、異なるポートで異なるアプリケーションをホストし、Nginx / ApacheにURIルーティングを実行させるのがおそらく最善でしょう-アプリケーション/リクエストの処理に干渉するものはすべて、傷ついた世界になりなさい。

于 2012-06-07T15:49:21.540 に答える