zoukankan      html  css  js  c++  java
  • Tornado学习(一)

    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 工作。当然,具体的实现还是比较复杂的,这里仅仅是简单概括一下。

  • 相关阅读:
    第一个程序01 零基础入门学习汇编语言20
    函数03 零基础入门学习C语言34
    函数03 零基础入门学习C语言34
    寄存器(内存访问)05 零基础入门学习汇编语言17
    寄存器(内存访问)06 零基础入门学习汇编语言18
    寄存器(内存访问)07 零基础入门学习汇编语言19
    寄存器(内存访问)06 零基础入门学习汇编语言18
    VC++实现恢复SSDT
    现实世界Windows Azure: 排气系统制造商 Akrapovič Revs 运用Windows Azure进行全球运营
    VC++实现全局钩子勾住消息对话框
  • 原文地址:https://www.cnblogs.com/wangzhilong/p/12549452.html
Copyright © 2011-2022 走看看