1.介绍一个基础框架:
import tornado.web
import tornado.ioloop
class IndexHandler(tornado.web.RequestHandler):
# IndexHandler只能接收get方法,不能接收post方法
def get(self):
self.write("test")
if __name__=="__main__":
# Application是tornado的核心应用类
# app里面保存了路由映射表,同时有一个listen方法可以用于创建http服务器的实例
app=tornado.web.Application([
(r"/",IndexHandler)
])
# 此行创建了一个服务器,并绑定了一个端口,但是没有开启此服务器
app.listen(8000)
# current()返回当前线程的IOLoop实例
# start()启动循环,开启监听
tornado.ioloop.IOLoop.current().start()
2.如何显式地创建一个服务器:
import tornado.web
import tornado.ioloop
import tornado.httpserver #需要引入httpserver模块
class IndexHandler(tornado.web.RequestHandler):
def get(self):
self.write("test")
if __name__=="__main__":
app=tornado.web.Application([
(r"/",IndexHandler)
])
# 创建一个服务器,服务器使用的路由映射表信息来自app
httpServer=tornado.httpserver.HTTPServer(app)
httpServer.listen(8000)
tornado.ioloop.IOLoop.current().start()
- tornado的web应用对象app的listen和服务器的listen不是同一个listen,因为它们属于不同的类,是不同的方法
- 第一段代码和第二段代码实质是一样的,只是第二段代码可以体验实际创建一个服务器的过程。
3.服务器启用多进程:
import tornado.web
import tornado.ioloop
import tornado.httpserver
class IndexHandler(tornado.web.RequestHandler):
def get(self):
self.write("test")
if __name__=="__main__":
app=tornado.web.Application([
(r"/",IndexHandler)
])
httpServer=tornado.httpserver.HTTPServer(app)
# httpServer.listen(8000)
httpServer.bind(8000)
httpServer.start(5)
tornado.ioloop.IOLoop.current().start()
- 首先如果要使用多进程就不能直接用服务器listen一个窗口了(listen只能在单进程模式中使用)
- 多进程要改用bind+start方法。其中start方法中的数字是最高进程数(默认是1个)
- 不建议直接启动多进程,而是使用手动创建子进程的方式,同时手动启动多个进程还可以绑定不同的端口