【问题标题】:Tornado : support multiple Application on same IOLoopTornado:支持同一个 IOLoop 上的多个应用程序
【发布时间】:2012-06-07 15:24:41
【问题描述】:

我想知道在Tornado框架中是否可以在同一个IOLoop上注册多个Application

有点像

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()

基本上我正在尝试构建我的网络应用程序,以便:

  1. 功能应用程序分离
  2. 每个 webapp 上可以有多个具有相同目的的处理程序(例如管理/监控/等)

【问题讨论】:

  • 您需要两个语义分离的Applications 有什么具体原因吗?
  • 嗯,它更多的是功能需求而不是技术需求。基本上我想在同一个 Tornado 容器(à la Tomcat)上托管两个应用程序;但这似乎不是正确的模式。

标签: python web-applications tornado


【解决方案1】:

简单的事情是,如果您要将应用程序绑定到不同的端口:

...
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()

这是 Tornado 简化的基本情况。挑战在于,通过在 URI 级别路由到应用程序,您跨越了设计边界,即每个应用程序负责其请求的所有 URI。

如果他们真的需要在 URI 级别而不是端口上提供服务,最好在不同的端口上托管不同的应用程序并让 Nginx/Apache 进行 URI 路由 - 任何涉及弄乱应用程序/请求处理的事情将会是一个充满伤害的世界。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-25
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多