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

    Tornado的Hello World
    服务器君一共花费 8.857 ms 进行了 3 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

    Hello World

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

    import tornado.ioloop
    import tornado.web
     
    class MainHandler(tornado.web.RequestHandler):
        def get(self):
            self.write("Hello, world")
     
    application = tornado.web.Application([
        (r"/", MainHandler),
    ])
    if __name__ == "__main__":
        application.listen(8888)
        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 服务器的大体处理流程,接下来我们将会详细分析每一步流程的实现。

    (右键查看大图
更多 推荐条目

Welcome to NowaMagic Academy!

现代魔法 推荐于 2013-02-27 10:23   

本章最新发布
随机专题
  1. [软件工程与项目管理] 浏览器与CSS渲染技巧 2 个条目
  2. [移动开发] 从代码角度去认识HttpClient 2 个条目
  3. [C语言程序设计] C语言里的全局变量 2 个条目
  4. [运维管理] 路由器与交换机 4 个条目
  5. [移动开发] Android与SQLite数据库 7 个条目
  6. [计算机算法] TAOCP与算法 12 个条目
  7. [PHP程序设计] htaccess 设置技巧 6 个条目
  8. [PHP程序设计] PHP数组探索 4 个条目
  9. [Python程序设计] Django Web环境配置 2 个条目
  10. [Python程序设计] Django与表单 4 个条目
  11. [JavaScript程序设计] 关于HTTP Keep-Alive 6 个条目
  12. [移动开发] Activity 初步知识 2 个条目
窗口 -- [八点]