Tornado(1)
Tornado
1,概念:
Tornado全称Tornado Web Server,是一个用Python语言写成的Web服务器兼Web应用框架。
Tornado走的是少而精的方向,注重的是性能优越,它最出名的是异步非阻塞的设计方式。
2,初识Tornado
(1)创建web应用对象,并进行配置。
(2)定义实现路由映射列表中的handler类。
(3)创建服务器实例,绑定服务器端口。
(4)启动当前线程的IOLoop,监听端口。
(5)发送get / post请求。
3,options模块
利用tornado.options模块进行全局参数的定义;
define():用来定义options选项变量的方法
参数:name:选项变量名,须保证全局唯一性;
default:选项变量的默认值,默认为None;
type:选项变量的类型。可以是str、float、int、datetime、timedelta中的某个。
multiple:选项变量的值是否可以为多个,默认值为False。multiple为True,那么选项变量是一个list列表值与值之间用逗号分隔。
help:选项变量的帮助提示信息,默认为None;
options的传值和使用:
从配置文件中读取参数 parse_config_file(path)
p1 = v1 或 p2 =[“v1”,”v2”,”v3”]
4,路由列表
[
(r"/", Handler1),
(r"/path", Handler2, {“p1":“v1"}),
url(r"/path2", Handler3,{“p1":“v1"}, name=“xxx_xxx") ,
]
(1)获取初始化参数列表;
(2)添加url到路由列表,根据name反向解析路径;
5,解析客户端的请求:
(1)解析请求路径 ...../xxx/yyy
- 未命名式获取 …/(正则1)/(正则2)
- 命名式获取 …/(?P<name1>正则1)/(?P<name2>正则2)
(2)获取get方式请求参数
(3)获取post方式请求参数
(4)解析请求头request header
(5)解析特殊请求体(json,图片)
6,RequestHander.request对象
(1)method HTTP的请求方式,如GET或POST;
(2)host 被请求的主机名;
(3)uri 请求的完整资源标示,包括路径和查询字符串;
(4)path 请求的路径部分;
(5)query 请求的查询字符串部分;
(6)version 使用的HTTP版本;
(7)headers 请求的协议头,是类似字典的对象,支持关键字索引的方式获取特定协议头信息,例如:request.headers[“Content-Type”],也可以用get的方式获取指定特定协议头信息;
(8)body 请求体数据(二进制格式);
(9)remote_ip 客户端的IP地址;
(10)files 用户上传的文件,为字典类型
7,请求头和一些请求体中获得的内容
所有请求头:request.headers
Json: request.headers.get(“Content-Type”,””)
request.body()
文件:
{"form_filename1":[<tornado.httputil.HTTPFile>, <tornado.httputil.HTTPFile>]}
因为支持多文件上传,所以一个form_filename1对应多个HTTPFile对象;
tornado.httputil.HTTPFile是接收到的文件对象,它有三个属性:
<1> filename 文件的实际名字;
<2> body 文件的数据实体
<3> content_type 文件的类型。
这三个对象属性可以像字典一样支持关键字索引,如httpFile1[“body”],获取第一个上传文件的具体数据。