龙卷风:使用多进程时支持多个应用程序吗?(注:多个应用程序)

时间:2018-10-13 05:44:07

标签: python python-3.x flask tornado

这是我的代码。

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

ioloop.IOLoop.instance().start()

我想使用https://www.tornadoweb.org/en/stable/httpserver.html之类的多进程。 我应该修改我的代码吗?

1 个答案:

答案 0 :(得分:1)

要在多进程模式下支持多个Applications,必须在add_sockets方法中使用“高级”模式:

sockets1 = tornado.netutil.bind_sockets(8080)
sockets2 = tornado.netutil.bind_sockets(8081)
tornado.process.fork_processes(0)
server1 = HTTPServer(app1)
server2 = HTTPServer(app2)
server1.add_sockets(sockets1)
server2.add_sockets(sockets2)
IOLoop.current().start()

在调用fork_processes之前绑定所有套接字(不执行其他任何操作),然后创建服务器并将套接字添加到其中。