1、tornado 是什么?

     tornado是一个python web框架,和异步的网络库。使用的是非阻塞i/o,基于事件ioloop机制。在网络通信层,使用的是epoll模型。tornado是一个很高效的web开发框架,通过这个框架,开发人员可以快速的开发。下面是tornado的设计模型:

wKioL1O03qTxhq78AAFj57ARxdU659.jpg

从图中可以看出,整个设计分为四层:

    1、 最低层的EVENT层处理IO事件;

    2、 TCP层实现了TCP服务器,负责数据传输;

    3、 HTTP/HTTPS层基于HTTP协议实现了HTTP服务器和客户端;

    4、 最上层为WEB框架

2、tornado安装 

    1、下载tornado

    $wget https://github.com/downloads/facebook/tornado/tornado-2.4.1.tar.gz

    2、解压编译安装

    $ tar -zxvf tornado-2.4.1.tar.gz
    $ cd tornado-2.4.1
    $ python setup.py build
    $ python setup.py install

    3、创建测试文件

    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()

4、运行文件

    $python hello.py

出现下面的错误

    import zlib
    ImportError: No module named zlib

解决方法:再次编译python。 进入python源程序目录执行 :

    $./configure --with-zlib
    $make && make install

再次运行python hello.py,然后打开浏览器,输入http://ip:8888就看到页面输出Hello, world了。表明已经OK了。

3、tornado web框架使用实例

    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()

note:每个url都对应一个handler来处理。

4 、tornado httpservice使用实例

    

    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 = tornado.httpserver.HTTPServer(handle_request)

    http_server.listen(8888)

    tornado.ioloop.IOLoop.instance().start()


总结:tornado是google公司员工开发的,屏蔽了底层的网络通信, 让IT技术人员可以只注重业务逻辑的处理,节省了更多的时间。