Tornado:在同一个IOLoop上支持多个Application

oDD*_*ooL 6 python web-applications tornado

我想知道在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()
Run Code Online (Sandbox Code Playgroud)

基本上我正在尝试构建我的webapp,以便:

  1. 功能应用是分开的
  2. 每个webapp上都可以使用多个具有相同目的的处理程序(例如admin/monitoring/etc)

kob*_*las 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()
Run Code Online (Sandbox Code Playgroud)

这是Tornado变得简单的基础案例.挑战在于,通过在URI级别路由到应用程序,您将跨越设计边界,即每个应用程序负责其请求的所有URI.

如果它们都需要在URI级别而不是端口上进行服务,那么最好在不同的端口上托管不同的应用程序并让Nginx/Apache执行URI路由 - 任何涉及搞乱应用程序/请求处理的事情都会发生是一个受伤的世界.