Tornado的三大核心模块与处理流程

Hello World

下面是 Tornado 官网提供的一个hello world的代码示范,我们来分析下程序的构成。

01 import tornado.ioloop
02 import tornado.web
03   
04 class MainHandler(tornado.web.RequestHandler):
05     def get(self):
06         self.write("Hello, world")
07   
08 application = tornado.web.Application([
09     (r"/", MainHandler),
10 ])
11 if __name__ == "__main__":
12     application.listen(8888)
13     tornado.ioloop.IOLoop.instance().start()

实现非常简单,只需要定义自己的处理方法,其它的东西全部交给 Tornado 完成。

首先创建 web application,并把我们的处理方法 MainHandler 传递过去。然后在8888开始监听。最后启动事件循环,开始监听网络事件,主要是 socket 的读和写。

Python 又是这样一种便捷的语言,上面这段代码直接贴到文本中,无需编译,就可以直接运行,一个 server 就产生了。

模块分析

Tornado 为了实现高并发和高性能,使用了一个 IOLoop 来处理 socket 的读写事件,IOLoop 基于 epoll,可以高效的响应网络事件。这是 Tornado 高效的保证。

为了在处理请求的时候,实现对 socket 的异步读写,Tornado 实现了 IOStream 类,用来处理 socket 的异步读写。

HTTPConnection 这个类用来处理 http 的请求,包括读取http请求头,读取post过来的数据,调用用户自定义的处理方法,以及把响应数据写给客户端socket。

以上就是 Tornado 服务器有3大核心模块,下面这幅图描述了 tornado 服务器的大体处理流程,接下来我们将会详细分析每一步流程的实现。

Tornado的三大核心模块与处理流程_第1张图片

你可能感兴趣的:(python)