tornado源码分析系列(五)[HTTPServer 层]
来源:互联网 发布:开启windows休眠 编辑:程序博客网 时间:2024/05/21 08:51
引言:第四章讲解的有些乱,主要是代码太长了,而且还是在一章就讲完了,所以我决定将IOStream上层的HTTPServer类分作几章来讲,不按照代码顺序
在讲完了IOLoop和IOStream后就知道,第一次在监听套接口的时候需要用到IOLoop,然后创建一个IOStream对象,然后以后的IO操作都由IOStream对象完成
所以在上层的HTTP协议处理中,tornado定义了一个HTTPConnection类
这个类主要完成的工作就是完成对下,完成HTTP数据包的传输,对上层HTTPserver提供解析后的request对象
那么他们之间的工作模式是怎样的呢
看看Demo
import
httpserver
import
ioloop
def
handle_request(request):
message
=
"You requested %s\n"
%
request.uri
request.write(
"HTTP/1.1 200 OK\r\nContent-Length: %d\r\n\r\n%s"
%
(
len
(message), message))
request.finish()
http_server
=
httpserver.HTTPServer(handle_request)
http_server.listen(
8888
)
ioloop.IOLoop.instance().start()
这次我没有在Demo里面加注释,因为我觉得这样更清晰
上面的代码是现在HTTP框架很传统的方式
定义一个处理request 请求的回调函数,并完成自己HTTP数据包的构造,并发送出去
过程很简单,首先是创建一个HTTPServer,然后加入自己的回调函数,当然这个回调函数可以不这么简单
这里只是一个Demo,你甚至可以在 request对象中提取表单数据等
启动监听端口8888并启动IOLoop
然后在取得了一个HTTP请求之后,就会回调handle_request,其中在回调函数中的 request 就是由 HTTPConnection处理后的完整的
HTTP层需要的数据,包括一些表单数据等
好了,现在很清晰的知道了HTTP层总共有几个主要的类
1.HTTPServer
2.HTTPConnection
3.HTTPRequest
这三个类的功能总体上是这样
总结:这个是很传统的处理方式,但是其中涉及的细节很多,怎样放置回调函数等
在此HTTPServer之上,可以通过解析Request并加上一些其他更好的功能,组成一个真正的web框架
此章只是在原理上对HTTPServer做一个分析,下一章将从源代码方面看整个设计过程
- tornado源码分析系列(五)[HTTPServer 层]
- tornado源码阅读--HTTPServer篇
- tornado源码分析系列 [网络层 IOLoop类] 优秀系列文章可以看看
- tornado源码分析系列(四)[buffer事件类IOStream]
- tornado源码分析系列 buffer事件类IOStream
- Tornado源码分析
- tornado源码分析
- TORNADO源码分析
- tornado源码分析-Application
- Tornado httpserver模块
- tornado系列五:cookie安全
- TaskTracker中HttpServer doGet源码分析
- Java多线程系列(五)—LockSupport源码分析
- Tornado: 2. 源码分析 (3)
- Tornado源码分析之IOLoop
- Tornado源码分析1-Configurable
- Tornado框架知识系列之五
- Thrift源码系列----2.TTransport层源码分析
- lightoj 1265 概率dp
- 黑马程序员_java概述与基础知识
- 单人操作控牌教程╲▂【在线演示QQ:194714506】
- lightoj1104(数学概率与期望)
- 单人操作控牌方法◣█【在线演示QQ:194714506】
- tornado源码分析系列(五)[HTTPServer 层]
- Maven: NoClassDefFoundError: org/codehaus/plexus/classworlds/launcher/Launcher
- 单人操作控牌手法▅■【在线演示QQ:194714506】
- android ListView几个比较特别的属性
- 单人操作怎么控牌█ζ【在线演示QQ:194714506】
- #define 详解
- 字符串去掉空白
- 关于安卓屏幕保持常亮的问题
- 单人操作怎样控牌▄☆【在线演示QQ:194714506】