tornado 学习笔记15 _ServerRequestAdapter分析
继承于HTTPMessageDeletegate,是HTTPMessageDeletegate的一种实现,用于处理请求消息。
15.1 构造函数
def __init__(self, server, server_conn, request_conn):self.server = serverself.connection = request_connself.request = Noneif isinstance(server.request_callback,httputil.HTTPServerConnectionDelegate):self.delegate = server.request_callback.start_request(server_conn, request_conn)self._chunks = Noneelse:self.delegate = Noneself._chunks = []
判断HttpServer的request_callback属性的类型,如果是HTTPServerConnectionDelegate类型,设置委托代理属性,一旦设置了委托代理,以后请求消息的处理都由委托代理执行。其实在我们在应用Tornado开始应用程序时,初始化HttpServer时都会传递一个Application对象作为request_callback属性的值,而这个对象就是HTTPServerConnectionDelegate类型,因此,请求消息的处理可以参考Application对象的start_request方法返回的_RequestDispatcheer类。
15.2 headers_received
在HTTP头部被接收以及被解析后调用。
def headers_received(self, start_line, headers):if self.server.xheaders:self.connection.context._apply_xheaders(headers)if self.delegate is None:self.request = httputil.HTTPServerRequest(connection=self.connection, start_line=start_line,headers=headers)else:return self.delegate.headers_received(start_line, headers)
参数:
start_line:代表开始行,如果是客户端消息,则是RequestStartLine,如果是服务端消息,则是ResponseStartLine.
headers:HTTPHeaders实例。表示消息头数据。
15.3 data_received
当数据块被接收后调用。
def data_received(self, chunk):if self.delegate is None:self._chunks.append(chunk)else:return self.delegate.data_received(chunk)
参数:
chunk: 接收到的数据块。
15.4 finish
当最后一个数据块被接收后调用。
def finish(self):if self.delegate is None:self.request.body = b''.join(self._chunks)self.request._parse_body()self.server.request_callback(self.request)else:self.delegate.finish()self._cleanup()
就是做一些清理工作。
15.5 on_connection_close
当连接关闭后被调用。
def on_connection_close(self):if self.delegate is None:self._chunks = Noneelse:self.delegate.on_connection_close()self._cleanup()
转载于:https://www.cnblogs.com/liaofeifight/p/5099307.html
tornado 学习笔记15 _ServerRequestAdapter分析相关推荐
- tornado 学习笔记17 HTTPServerRequest分析
代表Http请求. 所有的属性都是字符串型. 17.1 属性 (1) method:请求方法类型,比如"GET"."POST" (2) uri: 请求的uri ...
- Hadoop学习笔记—15.HBase框架学习(基础知识篇)
Hadoop学习笔记-15.HBase框架学习(基础知识篇) HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问.HBase的目标是存储并处理大型的数据.HBase ...
- C++语言学习笔记15:Clean 垃圾清理插件
C++语言学习笔记15:Clean 垃圾清理插件 对话框 STET1 图片切换功能 导入位图资源 插入图片控件并修改属性 添加消息处理函数 step2 开发思路及类关系图 step3 添加控件及MFC ...
- 数据结构与算法学习笔记15:最大流问题 / 二分图 / 有权无权二分图的匹配 / 匈牙利算法 / 银行家算法 / 稳定婚配
数据结构与算法学习笔记15:最大流问题 / 二分图 / 有权无权二分图的匹配 / 匈牙利算法 / 银行家算法 / 稳定婚配 引入小题:最短路径 最大流问题(maximum flow problem) ...
- 凸优化学习笔记 15:梯度方法
前面的章节基本上讲完了凸优化相关的理论部分,在对偶原理以及 KKT 条件那里我们已经体会到了理论之美!接下来我们就要进入求解算法的部分,这也是需要浓墨重彩的一部分,毕竟我们学习凸优化就是为了解决实际当 ...
- Qt学习笔记,再次分析EVA源码之后得出的结论-QListView,QListViewItem(Qt3);Q3ListView,Q3ListViewItem(Qt4)...
Qt学习笔记,再次分析EVA源码之后得出的结论-QListView,QListViewItem(Qt3);Q3ListView,Q3ListViewItem(Qt4) 今天再次分析了Eva的源码,也看 ...
- tornado学习笔记day08-tornado中的异步
概述 应为epoll主要用来解决网络的并发问题,所以tornado中的异步也是主要体现在网络的IO异步上,即异步web请求 tornado.httpclient.AsyncHTTPClient tor ...
- tornado学习笔记day07-同步与异步
同步 概念 同步就是按部就班的依次执行我们的代码 进阶 但是有些情况我们有一些比较耗时的从操作,比如去别的地方拿点资源,去其他网站请求数据,去访问数据库,上传文件等等,所以这里面优点瑕疵,有小编一一道 ...
- tornado学习笔记day06-应用安全
应用安全 cookie 普通cookie 一般我们的用户表中都有啥呢 你在购物的时候,加入购物车,让你登录,那你登录之后,他怎么知道你登录了呢 token 这个值是随机的,存在cookie里面 设置 ...
最新文章
- Linux基金会网络策略副总裁Marc Cohn:OPEN-O遍及网络,尽享服务
- 车载DMI linux系统,基于嵌入式的CTCS3级车载DMI系统的设计与实现
- 《深入理解mybatis原理》 MyBatis的一级缓存实现详解 及使用注意事项
- 【Android 逆向】ART 脱壳 ( InMemoryDexClassLoader 脱壳 | 加固厂商在 ART 下使用的两种类加载器 | InMemoryDexClassLoader 源码 )
- 保留关键字 (Transact-SQL) user 也是,哎
- 暑期项目经验(九) -- request session application
- 大佬教你如何写出更好的CSS,分享web前端资料
- 面向对象设计与构造:oo课程总结
- 熟悉 scrollTop ,轻松做5个方面的事情。
- 子龙山人Learn Emacs in 21 Days: day 6 学习笔记
- js获取当前路径的url
- 什么是开源网络情报?有什么特点?
- 洛谷 P3975 [TJOI2015]弦论 解题报告
- turtle---见证小海龟的浪漫之画
- 【数据处理】python matplotlib 画箱线图;箱线图介绍;如何画箱线图
- 文本框固定任意一顶点后,拖动相对点任意旋转缩放,计算缩放后顶点坐标
- html地址查询,根据地址查询经纬度.html
- C语言-图书管理系统
- 服务器ibmc无法加载js文件,weUI应用之JS常用信息提示弹层的封装
- 更新丨织信Informat V1.12:审批流通知支持移动端打开链接,一键实现快速审批