1. 建立web应用实例对象,第一个初始化参数为路由映射列表 2. 定义实现路由映射列表中的handler类 3. 建立服务器实例, 绑定服务器端口 4. 启动当前线程的IOLoop
1.RequestHandler:
封装了对应一个请求的全部信息和方法,write(响应信息)就是写响应信息的一个方法;对应每一种http请求方式(get、post等),把对应的处理逻辑写进同名的函数名方法里面(如对应get请求方式,就将对应的处理逻辑写在get()方法中),当没有对应请求方式的成员方法时,会返回“405: Method Not Allowed”错误。python
2.Application:linux
tarnado web框架的核心应用类,是与服务器对接的接口,里面保存了路由信息表,里面保存了路由信息表,其初始化接收的第一个参数就是一个路由信息映射元组的列表;其listen(端口)方法用来建立一个http服务器实例,并绑定到给的端口(注意:此时服务器并未开启监听)web
3.tornado.ioloop服务器
(1)tornado的核心io循环模块,封装了linux的epoll和BSD的kqueue,tornado高性能的基石app
(2)epoll原理框架
(3)IOLoop.current(): 返回当前线程的IOLoop实例。函数
(4)IOLoop.start(): 启动IOLoop实例的IO循环,同时服务器监听被打开。tornado
4.tornado.httpserveroop
实例:post
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Irving # 一个简单的tornado web # 引用对应的tornado包 from tornado.web import Application, RequestHandler from tornado.ioloop import IOLoop from tornado.httpserver import HTTPServer class IndexHandler(RequestHandler): def get(self): self.write("hello world!") if __name__ == '__main__': # 建立一个app应用 app = Application([('/', IndexHandler)]) # applisten('8000') # 为应用建立一个http服务 http_server = HTTPServer(app) # 绑定对应的端口号 http_server.listen(8000) # 开启多个tornado进程 # http_server.bind(8000) # http_server.start(4) IOLoop.current().start()
5.tornado.options
(1)tornado.options模块 -- 全局参数定义、存储、转换
(2)tornado.options.define()
1. def define(name, default=None, type=None, help=None, metavar=None, multiple=False, group=None, callback=None)
2. name 选项变量名,须保证全局惟一性,不然会报“Option 'xxx' already defined in ...”的错误
3. default 选项变量的默认值,如不传默认为None
4. type 选项变量的类型,转换不成功时会报错,能够是str、float、int、datetime、timedelta中的某个,若未设置则根据default的值自动推断,若default也未设置,那么再也不进行转换。能够经过利用设置type类型字段来过滤不正确的输入。
5. multiple 选项变量的值是否能够为多个,布尔类型,默认值为False,若是multiple为True,那么设置选项变量时值与值之间用英文逗号分隔,而选项变量则是一个list列表(若默认值和输入均未设置,则为空列表[])。
6. help 选项变量的帮助提示信息,在命令行启动tornado时,--help 能够查看全部选项变量的信息(注意,代码中须要加入tornado.options.parse_command_line())。
(3)tornado.options.options
全局options对象,全部定义的选项变量都会做为该对象的属性
(4)tornado.options.parse_command_line()
进行初始化
(5)tornado.options.parse_config_file(path)
(5)实例
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Irving # 一个简单的tornado web # 引用对应的tornado包 from tornado.web import Application, RequestHandler from tornado.ioloop import IOLoop from tornado.httpserver import HTTPServer import tornado.options tornado.options.define("port", type=int, default=8000, help="端口号") class IndexHandler(RequestHandler): def get(self): self.write("hello world!") if __name__ == '__main__': tornado.options.parse_command_line() # 建立一个app应用 app = Application([('/', IndexHandler)]) # applisten('8000') # 为应用建立一个http服务 http_server = HTTPServer(app) # 绑定对应的端口号 http_server.listen(tornado.options.options.port) # 开启多个tornado进程 # http_server.bind(8000) # http_server.start(4) IOLoop.current().start()