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
tornado基础入门(一)——简单了解tornado的更多相关文章
- Tornado开发技巧,简单了解tornado
tornado基础入门(一)——简单了解tornado 参考:http://demo.pythoner.com/itt2zh/ch1.html tornado是一个轻量级的web框架,是一个用pyth ...
- python基础入门学习简单程序练习
1.简单的乘法程序 i = 256*256 print('The value of i is', i) 运行结果: The value of i is 65536 2.执行python脚本的两种方式 ...
- 【Dubbo】Dubbo+ZK基础入门以及简单demo
参考文档: 官方文档:http://dubbo.io/ duboo中文:https://dubbo.gitbooks.io/dubbo-user-book/content/preface/backgr ...
- 1.tornado基础
import tornado.web ''' tornado基础web框架模块 ''' import tornado.ioloop ''' tornado的核心循环IO模块,封装了linux的epol ...
- Tornado基础学习篇
1.1 Tornado是什么? Tornado是使用Python编写的一个强大的.可扩展的Web服务器.它在处理严峻的网络流量时表现得足够强健,但却在创建和编写时有着足够的轻量级,并能够被用在大量的应 ...
- 01: tornado基础篇
目录:Tornado其他篇 01: tornado基础篇 02: tornado进阶篇 03: 自定义异步非阻塞tornado框架 04: 打开tornado源码剖析处理过程 目录: 1.1 Torn ...
- Tornado的入门研究
1.为啥要了解Tornado 首先,Tornado是大神写出来的,如果学习python的话,参照Tornado的源码是一件非常好的事情,属于FaceBook的开源代码 其次,Tornado就是我们在 ...
- 【JAVA零基础入门系列】Day12 Java类的简单应用
俗话说的好,实践出真知,所以除了理论知识掌握扎实以外,更重要的是要多加操练,这样才能掌握核心科技. 今天我们就用刚学会的类来实践一下,目标便是完成上一篇中的剁手任务. 我们的商品类已经准备好了,代码重 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
随机推荐
- 继承的基本概念: (1)Java不支持多继承,也就是说子类至多只能有一个父类。 (2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法。 (3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承。 (4)子类中定义的成员方法,并且这个方法的名字返回类型,以及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承。 分析以上程
继承的基本概念: (1)Java不支持多继承,也就是说子类至多只能有一个父类. (2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法.(3)子类中定义的成员变量和父类中定义的 ...
- 百度地图API--Key的获得
[开年后花了半个月的时间学习了百度地图API开发,准备投入项目中,学习的过程中写了一些简单的总结,在部门内部做了一个简单的分享培训,这里希望将自己的仅有的一点点关于百度地图API的收获分享给社区,整个 ...
- ionic路由(页面切换)
ui-router 的工作原理非常类似于 Angular 的路由控制器,但它只关注状态. • 在应用程序的整个用户界面和导航中,一个状态对应于一个页面位置 • 通过定义controller.templ ...
- 实现linux和windows文件传输
其实这个题目有点大,这里介绍的只是linux和windows文件传输中的一种,但是这种方法却非常实用,那就是:ZModem协议具体是linux命令是:rz和sz但是其实它们是两个非常方便的工具. ...
- JAVA特性-跨平台/面向对象
JAVA特点概述 一,跨平台 这无疑是java最大的特点了,我相信大多数人第一次听说java语言大都从跨平台开开始的.实际上java跨平台特性主要体现在两个方面:编码和运行机制. 1,编码 java语 ...
- GPL、BSD和Apache开源许可证
参考资料 五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT) 如何选择开源许可证? - 阮一峰的网络日志 开源许可证教程 - 阮一峰的网络日志 简介 自由软件许可证由FSF(Free ...
- shell 变量中间有空格 如何传入整个变量
parmfile='abc 123' RunProgram programname "${parmfile}" -->传入abc 123 RunProgram progr ...
- QT学习笔记3:QT中语法说明
一.Qt 类中Q_OBJECT的作用 QObject 是所有Qt对象的基类. QObject 是Qt模块的核心.它的最主要特征是关于对象间无缝通信的机制:信号与槽.使用connect()建立信号到槽的 ...
- shellcode在栈溢出中的利用与优化
0x00 前言 在<Windows Shellcode学习笔记——shellcode的提取与测试>中介绍了如何对shellcode作初步优化,动态获取Windows API地址并调用,并通 ...
- [HDU6196]happy happy happy
题目大意: 有一个长度为n的数列,A和B两个人轮流从两端取数,B先取,A想使分数严格小于B且尽量接近B,问两人分数之差最小是多少. 思路: 折半搜索,先预处理出长度为part的最大差最小差,再预处理出 ...