zoukankan      html  css  js  c++  java
  • tornado基础入门(一)——简单了解tornado

    参考:http://demo.pythoner.com/itt2zh/ch1.html

    tornado是一个轻量级的web框架,是一个用python写的web服务器,它有三个最大的特点(优势)速度、简单和可扩展性。

    编写tornado应用做多最多的工作就是定义一个类去继承tornado中的RequestHandler类。

    来看一个例子:

    # hello.py

     1 import tornado.httpserver
     2 import tornado.ioloop
     3 import tornado.options
     4 import tornado.web
     5 
     6 from tornado.options import define, options
     7 define("port", default=8000, help="run on the given port", type=int)
     8 
     9 class IndexHandler(tornado.web.RequestHandler):
    10     def get(self):
    11         greeting = self.get_argument('greeting', 'Hello')
    12         self.write(greeting + ', friendly user!')
    13 
    14 if __name__ == "__main__":
    15     tornado.options.parse_command_line()
    16     app = tornado.web.Application(handlers=[(r"/", IndexHandler)])
    17     http_server = tornado.httpserver.HTTPServer(app)
    18     http_server.listen(options.port)
    19     tornado.ioloop.IOLoop.instance().start()

    这个例子编写了一个非常简单的应用。

    我们可以在命令行中启动它:

    python hello.py --port=8000

    然后再从浏览器中打开这个应用,输入网址:

    http://localhost:8000/

    可以看到网页上显示:

    Hello, friendly user!

    " 我们在命令行输入的  ’prot' 的参数是通过第七行中的define传递的,define是tornado.options模块中的一个函数,这个模块用来读取命令行中的一些设置。例如我们在命令行中设置了它的端口prot=8888,define就匹配出它所设置的同名变量 ‘prot’ ,将它从默认值改为 ‘8888’(默认值为8000),这时我们则需要从这个网址进入“http://localhost:8888/" "

    这显示的是我们代码第12行 ’write‘进的内容。

    我们可以定制一下这个内容,可以看到 ’write' 的有个自定义的变量 ‘greeting' ,而这个变量的默认值为 'Hello’ , 它是通过tornado中的内建函数 ‘ get_argument ‘ 来传递给 ’write‘ ,

    所以我们来改变这个变量,从哪入手呢? 从网址入手!

    http://localhost:8000/?greeting=Hi

    在 ‘?’后给变量重新赋值,这时可以发现网页上的内容变为:

    Hi, friendly user!

    来梳理以下这段代码的工作流程:

    14 if __name__ == "__main__":
    15     tornado.options.parse_command_line()
    16     app = tornado.web.Application(handlers=[(r"/", IndexHandler)])
    17     http_server = tornado.httpserver.HTTPServer(app)
    18     http_server.listen(options.port)
    19     tornado.ioloop.IOLoop.instance().start()

      1. 我们的应用真正运行起来的时 ‘15、16 ’两行,通过tornado.options模块解析命令行参数,再创建了一个tornado的Application类的实例,最重要的参数时 ‘handler’ 它来告诉tornado应该用哪个类来响应请求。

      2. 后面开始,这段代码将会被反复使用,Application对象被创建,我们将其传递给tornado中的HTTPServer对象,然后使用我的命令行指定端口监听(通过options模块取出)。

      3. 最后,程序准备好接受http请求后,我们创建一个tornado的IOLoop的实例。

                                                                    2016-11-17   15:51:49

    参考:http://demo.pythoner.com/itt2zh/ch1.html

  • 相关阅读:
    自定义类型中结构体、枚举等,结构体内存对齐相关要点总结
    可变参数模拟printf()函数实现一个my_print()函数以及调用可变参数需注意的陷阱
    一些关于memcpy memmove函数的区别,和模拟实现
    浅谈 数组指针 指针数组 函数指针 函数指针数组... 以及它们之间区别。
    C语 三子棋小游戏
    5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
    stm32移植ds18b20时出现的问题
    自己实现strcmp
    C语言新手写扫雷攻略3
    C语言新手写扫雷攻略2
  • 原文地址:https://www.cnblogs.com/ymjr/p/6074119.html
Copyright © 2011-2022 走看看