参考: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

tornado基础入门(一)——简单了解tornado的更多相关文章

  1. Tornado开发技巧,简单了解tornado

    tornado基础入门(一)——简单了解tornado 参考:http://demo.pythoner.com/itt2zh/ch1.html tornado是一个轻量级的web框架,是一个用pyth ...

  2. python基础入门学习简单程序练习

    1.简单的乘法程序 i = 256*256 print('The value of i is', i) 运行结果: The value of i is 65536 2.执行python脚本的两种方式 ...

  3. 【Dubbo】Dubbo+ZK基础入门以及简单demo

    参考文档: 官方文档:http://dubbo.io/ duboo中文:https://dubbo.gitbooks.io/dubbo-user-book/content/preface/backgr ...

  4. 1.tornado基础

    import tornado.web ''' tornado基础web框架模块 ''' import tornado.ioloop ''' tornado的核心循环IO模块,封装了linux的epol ...

  5. Tornado基础学习篇

    1.1 Tornado是什么? Tornado是使用Python编写的一个强大的.可扩展的Web服务器.它在处理严峻的网络流量时表现得足够强健,但却在创建和编写时有着足够的轻量级,并能够被用在大量的应 ...

  6. 01: tornado基础篇

    目录:Tornado其他篇 01: tornado基础篇 02: tornado进阶篇 03: 自定义异步非阻塞tornado框架 04: 打开tornado源码剖析处理过程 目录: 1.1 Torn ...

  7. Tornado的入门研究

    1.为啥要了解Tornado 首先,Tornado是大神写出来的,如果学习python的话,参照Tornado的源码是一件非常好的事情,属于FaceBook的开源代码 其次,Tornado就是我们在 ...

  8. 【JAVA零基础入门系列】Day12 Java类的简单应用

    俗话说的好,实践出真知,所以除了理论知识掌握扎实以外,更重要的是要多加操练,这样才能掌握核心科技. 今天我们就用刚学会的类来实践一下,目标便是完成上一篇中的剁手任务. 我们的商品类已经准备好了,代码重 ...

  9. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

随机推荐

  1. STL容器读书笔记

    vector vector维护的是一个连续线性空间 vector是动态空间,随着元素的加入会自动扩容,扩充至当前size的两倍,然后将原内容拷贝,开始在原内容之后构造新元素,并释放空间 vector提 ...

  2. span 超出内容自动换行

    <span style="width:80%;word-break:normal;display:block;word-warp:break-word;overflow:hidden; ...

  3. 谷歌pagerank算法简介

    在这篇博客中我们讨论一下谷歌pagerank算法.这是参考的原博客连接:http://blog.jobbole.com/71431/ PageRank的Page可是认为是网页,表示网页排名,也可以认为 ...

  4. [leetcode tree]96. Unique Binary Search Trees

    Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For examp ...

  5. 求N!末尾所得数字0的个数

    题目:给定一个整数N ,那么N 的阶乘N !末尾有多少个0呢? 例如:N = 10,N! = 3628800,所以N!末尾就有2个零. 分析:如果直接先算出N!阶乘,很容易导致内存溢出.显然,直接算出 ...

  6. Charles 对于线上比一比抓包怎么修改

    1: http://m.1768.com/?act=game_biyibi&abeam=1 Map Local /Users/zhengming/Desktop/biyibi.html biy ...

  7. HNOI2018 两天扫雷训练营

    Day -1 不知道干什么 学了下插头DP,随意看了几道题 Day 0 还是不知道干什么 打了一天的模板,1700多行.... 随意学了下回文树 Day 1 上午:各种丢人(好像没人注意) 电脑一开就 ...

  8. dll文件反编译,c#、vb动态库反编译

    最近开发遇到一个项目,对方提供一个c#编写的动态库,图片处理需要调用该动态库方法,发现一张图片处理起来需要5s时间,对方无法提供有效解决手段,抱着试一试的想法反编译的对方的动态库,发现其中问题. 一下 ...

  9. SGU 404 Fortune-telling with camomile

    404. Fortune-telling with camomile Time limit per test: 0.25 second(s)Memory limit: 65536 kilobytes ...

  10. Codeforces Round #298 (Div. 2) C. Polycarpus' Dice 数学

    C. Polycarpus' Dice Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/534/p ...