• 开始用Tornado:从Hello World开始

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

    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. [软件工程与项目管理] 了解一点WebKit 9 个条目
  2. [移动开发] Android Studio的使用技巧 4 个条目
  3. [PHP程序设计] htaccess 设置技巧 6 个条目
  4. [软件工程与项目管理] 浏览器初步介绍 8 个条目
  5. [PHP程序设计] 对输入文件类型的检测 1 个条目
  6. [移动开发] 从代码角度去认识HttpClient 2 个条目
  7. [数据结构] 图的定义 1 个条目
  8. [移动开发] 简单了解Android Fragment 3 个条目
  9. [数据库技术] SQL基础语法 1 个条目
  10. [C语言程序设计] C语言里的全局变量 2 个条目
  11. [Python程序设计] 从PHP到Python 3 个条目
  12. [PHP程序设计] PHP数组的遍历 7 个条目
窗口 -- [八点]