• 开始用Tornado:从Hello World开始

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

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

    完整的实例程序如下:

    #!/usr/bin/env python
    #
    # Copyright 2009 Facebook
    #
    
    import tornado.httpserver
    import tornado.ioloop
    import tornado.options
    import tornado.web
    
    from tornado.options import define, options
    
    define("port", default=8888, help="run on the given port", type=int)
    
    
    class MainHandler(tornado.web.RequestHandler):
        def get(self):
            self.write("Hello, Nowamagic")
    
    
    def main():
        tornado.options.parse_command_line()
        application = tornado.web.Application([
            (r"/", MainHandler),
        ])
        http_server = tornado.httpserver.HTTPServer(application)
        http_server.listen(options.port)
        tornado.ioloop.IOLoop.instance().start()
    
    
    if __name__ == "__main__":
        main()
    

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

    import tornado.httpserver
    import tornado.ioloop
    import tornado.options
    import tornado.web
    
    from tornado.options import define, options
    

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

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

    接下来是 MainHandler 的设置:

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

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

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

    def main():
        tornado.options.parse_command_line()
        application = tornado.web.Application([
            (r"/", MainHandler),
        ])
        http_server = tornado.httpserver.HTTPServer(application)
        http_server.listen(options.port)
        tornado.ioloop.IOLoop.instance().start()
    

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

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

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

    注释  
    import 语句  
    选项参数定义  
    Application定义  
    BaseHandler定义  
    XXHandlers定义  
    main()定义  
    
更多 推荐条目

Welcome to NowaMagic Academy!

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

本章最新发布
随机专题
  1. [搜索引擎优化] 与百度权重有关的信息 2 个条目
  2. [PHP程序设计] PHP数组探索 4 个条目
  3. [Python程序设计] Tornado表单处理 3 个条目
  4. [Python程序设计] Tornado源码解析 23 个条目
  5. [数据结构] 散列表(哈希表) 13 个条目
  6. [移动开发] Android布局中的一些常用控件 2 个条目
  7. [JavaScript程序设计] Web实时通信技术名词解析 5 个条目
  8. [移动开发] ListView 使用相关问题集 1 个条目
  9. [Python程序设计] Django模板系统 11 个条目
  10. [Python程序设计] 标准库:urllib/urllib2 14 个条目
  11. [软件工程与项目管理] 开始使用Git 3 个条目
  12. [移动开发] Android抽屉导航NavigationDrawer 5 个条目
窗口 -- [八点]