模块概述篇4--tornado.http1connection
2016-10-25 本文已影响0人
交话费的时间放寒假
概述:本模块是对HTTP/1.x协议实现的客户端和服务端
1、
#本类是用来处理网络“请求”数据的调度类
#想要学习实现一个http协议解析器本类是重点
#tornado中将作为server端收到的请求和client发出请求统一抽象为本类,已is_client来区分
#client模式由asyncclient创建
#server端由HTTP1ServerConnection作为构建类创建
class HTTP1Connection(httputil.HTTPConnection)
//核心方法
def _read_message(self, delegate)
#1. 通过_parse_headers解析start_line, headers(httputil.HTTPHeaders.parse方法)。本方法描述了http报文头的规则。
#2. delegate.headers_received(start_line, headers)将header传递给Application,创建响应的handler,查看是否有必要解析body
#server模式传递顺序:_ServerRequestAdapter.headers_received-->(Application)_RequestDispatcher.headers_received-->_RequestDispatcher.execute(参见tornado.web模块篇)
#client模式待续
#3. _read_body将body传递给handler。
#传递顺序:_read_body-->_read_fixed_body->_RequestDispatcher.data_received->handler.data_received
#等待handler _write_finished收尾