tornado学习路线以项目实际练习为主。
先来看官方给定的helloworld实例:
import tornado.ioloop
import tornado.web
class MainHander(tornado.web.RequestHandler):
def get(self):
self.write('hello world')
def make_app():
return tornado.web.Application([('/',MainHander),])
if __name__=='__main__':
app=make_app()
app.listen(9999)
tornado.ioloop.IOLoop.current().start()
结果展示:
1:ioloop实例,全局的tornado事件循环,是服务器的引擎核心。
2:app实例,代表一个完整的后端app,会挂接一个服务器套接字端口对外提供服务。
3:hander类,代表业务逻辑
4:路由表,将指定的url规则和hander连接起来,形成一个路由映射表
一个ioloop包含多个app
一个app包含一个路由表
一个路由表包含多个hander
当请求来临是,ioloop读取请求并解包为http请求对象,找到该套接字上对应app的路由表,通过请求对象的url查询路由表中挂接的hander,然后再执行hander。hander方法执行后一般会返回一个对象,ioloop负责将对象包装成http响应对象序列化发送给客户端。
ioloop特别说明:
ioloop是服务的引擎核心,他是发动机,负责接收和响应客户端请求,负责驱动业务hander的运行,负责服务器内部定时任务的执行。