自己看书抄的,想着用下markdown来着,没用好
后期写点程序出来
可以随意批评内容的不正确性以及排版的low,all accept!!
简单介绍下tornado
概念
Tornado是使用Python编写的一个强大的、可扩展的Web服务器
协程是tornado中推荐的编程方式
同步异步
同步 导致请求进程阻塞,一个被调用的io函数会阻塞调用函数的执行
异步不导致请求进程阻塞
异步编程提高了服务器的并发能力
协程
是tornado中进行异步开发的方法
协程使用了python关键字yield将调用者挂起和恢复
可以开发出类似同步代码的异步行为
本身不适用线程,所以减少了线程上下文切换的开销,是一种高效到的开发模式
结合了同步和异步处理的优点
关键点技术
用tornado.gen.coroutine装饰 处理器的 get post函数
使用异步对象处理耗时操作
使用yield关键字获取异步对象的处理结果
迭代器
是访问集合内元素的一种方式
yield
调用任何定义中包含yield关键字的函数都不会执行该函数,而会获得对应该函数的迭代器
ioloop
是tornado的主事件循环对象,tornado程序通过它监听外部客户端的访问请求,并执行相应操作
核心
完备的web框架
url路由映射
request上下文
基于模板的渲染技术### 高效的网络库
异步io支持
超时事件处理
可应用于
爬虫
物联网关
游戏服务器
高效的内部http服务器
它与tornado异步调用紧密结合
完备的websocket支持
架构
它还拥有处理安全性、用户验证、社交网络以及与外部服务(如数据库和网站API)进行异步交互的工具
tornado的基础
引入 ioloop跟web类
路由解析
### requesthandler
配置和响应url请求的核心类
接入点函数
输入函数
输出函数
### 用户身份验证框架
安全cookie机制
辨别用户身份而存储在用户本地终端的数据
用户身份认证
### 防止跨站攻击
跨站伪造请求 CSRF或xsrf 是一种对网站的恶意利用
tornado可以通过一个cookie头和一个隐藏的html表单元素向页面提供令牌
### websocket
是html5定义的一种新的标准协议,实现了浏览器与服务器的全双工通信 full-duplex
通信原理
在客户端与服务器之间建立tcp持久连接,从而使得当服务器有消息需要推送给客户端时能进行即时通信
建立链路的核心,四个字段
connection:upgrade
sec-websocket-key:12334
upgrade:websocket
sec-websocket-version:13
子主题 5