第一个tornado程序
1 import tornado.web 2 3 import tornado.ioloop 4 5 class IndexHandler(tornado.web.RequestHandler): 6
7 """这个是视图函数类"""
8 def get(self): 9 """和django类似,通过函数名标识请求方式""" 10 self.write('hello world') 11 if __name__ == '__main__'' 12 13 app = tornado.web.Application([(r'/',IndexHandler)]) 14 15 app.listen(9000) 16 17 tornado.ioloop.IOLoop.current().start()
1. tornado.web
tornado的基础web框架模块
RequestHandler
封装了请求和响应。
Application
核心应用类,类似于flask的app,是和服务器对接的接口,保存了路由信息,
listen方法绑定端口创建http服务器实例,但并未监听,与socket的listen不同,
2. tornado.ioloop
tornado的核心io循环模块,封装了Linux的epoll和BSD的kqueue,tornado高性能的基石。 以Linux的epoll为例,其原理如下图:
IOLoop.current()
返回当前线程的IOLoop实例
IOLoop.start()
启动IOLoop实例的IO循环,同时服务器监听打开
总结Tornado Web程序编写思路
- 创建web应用实例对象,第一个初始化参数为路由映射列表。
- 定义实现路由映射列表中的handler类。
- 创建服务器实例,绑定服务器端口。
- 启动当前线程的IOLoop。