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

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

    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. [PHP程序设计] PHP中的Hash算法 3 个条目
  2. [Python程序设计] Tornado源码解析 23 个条目
  3. [数据库技术] 数据库范式篇 5 个条目
  4. [Python程序设计] Python语言概述 6 个条目
  5. [PHP程序设计] CodeIgniter与PHP框架设计 5 个条目
  6. [PHP程序设计] 命令式编程范式 6 个条目
  7. [数据库技术] 无限级分类数据表设计 4 个条目
  8. [PHP程序设计] Nginx基本操作释疑 7 个条目
  9. [PHP程序设计] PHP数组的遍历 7 个条目
  10. [JavaScript程序设计] 关于HTTP Keep-Alive 6 个条目
  11. [Python程序设计] Python数据类型 11 个条目
  12. [Python程序设计] Django 入门知识浅介 10 个条目
窗口 -- [博客]