我想知道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()
基本上我正在尝试构建我的webapp以便:
答案 0 :(得分: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()
这是Tornado变得简单的基本案例。挑战在于,通过在URI级别路由到应用程序,您将跨越设计边界,即每个应用程序负责其请求的所有URI。
如果他们真的需要在URI级别而不是端口上进行服务,那么最好在不同的端口上托管不同的应用程序并让Nginx / Apache执行URI路由 - 任何涉及搞乱应用程序/请求处理的事情将是一个受伤的世界。