继承于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分析相关推荐

  1. tornado 学习笔记17 HTTPServerRequest分析

    代表Http请求. 所有的属性都是字符串型. 17.1 属性 (1) method:请求方法类型,比如"GET"."POST" (2) uri: 请求的uri ...

  2. Hadoop学习笔记—15.HBase框架学习(基础知识篇)

    Hadoop学习笔记-15.HBase框架学习(基础知识篇) HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问.HBase的目标是存储并处理大型的数据.HBase ...

  3. C++语言学习笔记15:Clean 垃圾清理插件

    C++语言学习笔记15:Clean 垃圾清理插件 对话框 STET1 图片切换功能 导入位图资源 插入图片控件并修改属性 添加消息处理函数 step2 开发思路及类关系图 step3 添加控件及MFC ...

  4. 数据结构与算法学习笔记15:最大流问题 / 二分图 / 有权无权二分图的匹配 / 匈牙利算法 / 银行家算法 / 稳定婚配

    数据结构与算法学习笔记15:最大流问题 / 二分图 / 有权无权二分图的匹配 / 匈牙利算法 / 银行家算法 / 稳定婚配 引入小题:最短路径 最大流问题(maximum flow problem) ...

  5. 凸优化学习笔记 15:梯度方法

    前面的章节基本上讲完了凸优化相关的理论部分,在对偶原理以及 KKT 条件那里我们已经体会到了理论之美!接下来我们就要进入求解算法的部分,这也是需要浓墨重彩的一部分,毕竟我们学习凸优化就是为了解决实际当 ...

  6. Qt学习笔记,再次分析EVA源码之后得出的结论-QListView,QListViewItem(Qt3);Q3ListView,Q3ListViewItem(Qt4)...

    Qt学习笔记,再次分析EVA源码之后得出的结论-QListView,QListViewItem(Qt3);Q3ListView,Q3ListViewItem(Qt4) 今天再次分析了Eva的源码,也看 ...

  7. tornado学习笔记day08-tornado中的异步

    概述 应为epoll主要用来解决网络的并发问题,所以tornado中的异步也是主要体现在网络的IO异步上,即异步web请求 tornado.httpclient.AsyncHTTPClient tor ...

  8. tornado学习笔记day07-同步与异步

    同步 概念 同步就是按部就班的依次执行我们的代码 进阶 但是有些情况我们有一些比较耗时的从操作,比如去别的地方拿点资源,去其他网站请求数据,去访问数据库,上传文件等等,所以这里面优点瑕疵,有小编一一道 ...

  9. tornado学习笔记day06-应用安全

    应用安全 cookie 普通cookie 一般我们的用户表中都有啥呢 你在购物的时候,加入购物车,让你登录,那你登录之后,他怎么知道你登录了呢 token 这个值是随机的,存在cookie里面 设置 ...

最新文章

  1. Linux基金会网络策略副总裁Marc Cohn:OPEN-O遍及网络,尽享服务
  2. 车载DMI linux系统,基于嵌入式的CTCS3级车载DMI系统的设计与实现
  3. 《深入理解mybatis原理》 MyBatis的一级缓存实现详解 及使用注意事项
  4. 【Android 逆向】ART 脱壳 ( InMemoryDexClassLoader 脱壳 | 加固厂商在 ART 下使用的两种类加载器 | InMemoryDexClassLoader 源码 )
  5. 保留关键字 (Transact-SQL) user 也是,哎
  6. 暑期项目经验(九) -- request session application
  7. 大佬教你如何写出更好的CSS,分享web前端资料
  8. 面向对象设计与构造:oo课程总结
  9. 熟悉 scrollTop ,轻松做5个方面的事情。
  10. 子龙山人Learn Emacs in 21 Days: day 6 学习笔记
  11. js获取当前路径的url
  12. 什么是开源网络情报?有什么特点?
  13. 洛谷 P3975 [TJOI2015]弦论 解题报告
  14. turtle---见证小海龟的浪漫之画
  15. 【数据处理】python matplotlib 画箱线图;箱线图介绍;如何画箱线图
  16. 文本框固定任意一顶点后,拖动相对点任意旋转缩放,计算缩放后顶点坐标
  17. html地址查询,根据地址查询经纬度.html
  18. C语言-图书管理系统
  19. 服务器ibmc无法加载js文件,weUI应用之JS常用信息提示弹层的封装
  20. 更新丨织信Informat V1.12:审批流通知支持移动端打开链接,一键实现快速审批

热门文章

  1. C#Winform控件随窗体缩放
  2. linux下SublimeText的中文输入法问题之解决方案
  3. 双机热备+Win2003下集群案例
  4. 判断远程文件是否存在
  5. Prism for WPF初探(构建简单的模块化开发框架)
  6. JSON 基础解释.
  7. 如何移植行情软件的指标到千发股票自动交易软件?
  8. 安卓高手之路之ClassLoader(四)
  9. 算法----左叶子之和
  10. Android 编译期间 动态修改AndroidMainFest文件