tornado4.5.2HTTP请求及响应流程

1.首先建立监听socket,监听socket事件,等待接受连接。

2.客户端有连接请求,建立连接,调用连接处理函数,进入HTTPServer的handle_stream方法处理。

3.实例化HTTP1ServerConnection, conn = HTTP1ServerConnection(stream, self.conn_params, context),调用conn.start_serving(self),self为HTTPServer对象

4.start_serving中会调用_server_request_loop(delegate), delegate为HTTPServer对象

5.调用request_delegate = delegate.start_request(self, conn), 此时request_delegate为_RoutingDelegate对象

6.调用conn.read_response(request_delegate), 读取请求数据

7.首先读取header部分,parse后得到start_line和请求headers,读取完header会调用delegate.headers_received(start_line, headers),此时delegate为request_delegate

8.调用_RoutingDelegate中的headers_received方法,实例化request = httputil.HTTPServerRequest(...), self.delegate = self.router.find_handler(request),此时,self.delegate为_HandlerDelegate对象。

9.调用_HandlerDelegate中的headers_received方法。暂时不考虑stream_request_body的情况,那么此方法什么也不做。

10.headers处理完之后,开始读取请求body,读取完之后,调用request_delegate.finish()

11.调用_HandlerDelegate中的finish()方法,分析请求body,调用_HandlerDelegate中的execute方法,处理请求。

12.实例化RequestHandler,调用它的_execute方法,根据request.method决定调用哪个具体的方法进行处理。

13.最后,将响应写回客户端,结束本次请求

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值