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

    Tornado的Hello World
    服务器君一共花费 10.317 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. [计算机算法] TAOCP与算法 12 个条目
  2. [移动开发] Android 开发调试工具 ADB 3 个条目
  3. [移动开发] Android Studio里的Gradle 3 个条目
  4. [C语言程序设计] C语言里的全局变量 2 个条目
  5. [软件工程与项目管理] 开始了解Git 5 个条目
  6. [数据库技术] 数据库范式篇 5 个条目
  7. [软件工程与项目管理] 浏览器与CSS渲染技巧 2 个条目
  8. [PHP程序设计] Nginx基本操作释疑 7 个条目
  9. [Python程序设计] Django数据库模型 6 个条目
  10. [Python程序设计] 标准库:urllib/urllib2 14 个条目
  11. [智力开发与知识管理] 超越整体性学习 5 个条目
  12. [移动开发] Android布局基本知识 3 个条目
窗口 -- [博客]