码迷,mamicode.com
首页 > 其他好文 > 详细

认识tornado(一)

时间:2016-06-15 20:51:40      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:

tornado 源码包中 demos 目录下包含一些示例程序,就从最简单的 helloworld.py 来看一个 tornado 应用程序的代码结构。

完整的实例程序如下:

01    #!/usr/bin/env python
02    #
03    # Copyright 2009 Facebook
04    #
05     
06    import tornado.httpserver
07    import tornado.ioloop
08    import tornado.options
09    import tornado.web
10     
11    from tornado.options import define, options
12     
13    define("port", default=8888, help="run on the given port", type=int)
14     
15     
16    class MainHandler(tornado.web.RequestHandler):
17        def get(self):
18            self.write("Hello, Nowamagic")
19     
20     
21    def main():
22        tornado.options.parse_command_line()
23        application = tornado.web.Application([
24            (r"/", MainHandler),
25        ])
26        http_server = tornado.httpserver.HTTPServer(application)
27        http_server.listen(options.port)
28        tornado.ioloop.IOLoop.instance().start()
29     
30     
31    if __name__ == "__main__":
32        main()

 

首先是一组 import。这个再正常不过了,当然,之前该有的注释什么的还是要有的。

1    import tornado.httpserver
2    import tornado.ioloop
3    import tornado.options
4    import tornado.web
5     
6    from tornado.options import define, options

 

接下来,是定义应用程序的选项,这样可以在启动应用程序的时候指定一些参数。tornado 提供了方法 tornado.options.define 来简化了选项参数的定义,具体的可以通过 help 来查看。这里有直接的例子,定义端口参数:

1    define("port", default=8888, help="run on the given port", type=int)

接下来是 MainHandler 的设置:

1    class MainHandler(tornado.web.RequestHandler):
2        def get(self):
3            self.write("Hello, Nowamagic")

XXHandler 针对映射的 url 的具体实现。

Handler 下面是 main() 函数的定义:

1    def main():
2        tornado.options.parse_command_line()
3        application = tornado.web.Application([
4            (r"/", MainHandler),
5        ])
6        http_server = tornado.httpserver.HTTPServer(application)
7        http_server.listen(options.port)
8        tornado.ioloop.IOLoop.instance().start()

应用程序执行时,会先解析选择参数。之后创建一个 Application 实例并传递给 HTTPServer 实例,之后启动这个实例,到此,http server 启动了。tornado.httpserver 模块用来支持非阻塞的 HTTP Server。

启动服务器之后,还需要启动 IOLoop 的实例,这样可以启动事件循环机制,配合非阻塞的 HTTP Server 工作。当然,具体的实现还是比较复杂的,这里仅仅是简单概括一下。

总结下来,代码组织如下:

1    注释 
2    import 语句 
3    选项参数定义 
4    Application定义 
5    BaseHandler定义 
6    XXHandlers定义 
7    main()定义  

 

   

认识tornado(一)

标签:

原文地址:http://www.cnblogs.com/work115/p/5588802.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!