紧接上回
httpserver
将app.listen进行拆分
则可以写成
1 import tornado.httpserver 2 3 #app.listen(9000) = 4 5 http_server = tornado.httpserver.HTTPServer(app) 6 http_server.listen(9000)
tornado.httpserver模块就是tornado的HTTP服务器实现,由于要获取路由信息,所以需要传入app对象
单进程与多进程
修改之前代码
1 import tornado.web 2 import tornado.ioloop 3 import tornado.httpserver 4 5 class IndexHandler(tornado.web.RequestHandler): 6 """主路由处理类""" 7 def get(self): 8 """对应http的get请求方式""" 9 self.write("Hello Itcast!") 10 11 if __name__ == "__main__": 12 app = tornado.web.Application([ 13 (r"/", IndexHandler), 14 ]) 15 http_server = tornado.httpserver.HTTPServer(app) 16 # -----------修改---------------- 17 http_server.bind(8000) 18 http_server.start(0) 19 # ------------------------------ 20 tornado.ioloop.IOLoop.current().start()
http_server.bind(port)方法是将服务器绑定到指定端口。
http_server.start(num_processes=1)方法指定开启几个进程,参数num_processes默认值为1,即默认仅开启一个进程;如果num_processes为None或者<=0,则自动根据机器硬件的cpu核芯数创建同等数目的子进程;如果num_processes>0,则创建num_processes个子进程。
注:
1.app.listen()只限于单进程
2.不建议这种多进程方式,而是应手动开启多个进程,并且绑定不同端口