tornado的简单介绍和示例
2015-10-09 18:07
330 查看
一、Tornado简介
Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本。这个 Web 框架看起来有些像 web.py 或者 Google 的 webapp,不过为了能有效利用非阻塞式服务器环境,这个 Web 框架还包含了一些相关的有用工具 和优化。
Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其非阻塞的方式和对 epoll 的运用,Tornado 每秒可以处理数以千计的连接,这意味着对于实时 Web 服务来说,Tornado 是一个理想的 Web 框架。我们开发这个 Web 服务器的主要目的就是为了处理 FriendFeed 的实时功能 ——在 FriendFeed 的应用里每一个活动用户都会保持着一个服务器连接。(关于如何扩容 服务器,以处理数以千计的客户端的连接的问题,请参阅 C10K problem。)
二、hello world示例
Tornado的hello word是怎么来的?示例如下:
运行后,使用浏览器访问IP:8888端口,即可出现hello word
浏览器打开 “http://ip:8888” 的时候,发出 “GET”请求,请求根目录”/”,
根据tornado.web.Application中参数列表中元组对(r’/’,MainHandler),于是找到MainHandler类,这个类继承了tornado.web.RequestHandler类,但是它里面没有定义get和post方法(具体可以看源码),所以在MainHandler类中定义。
Tornado框架自身实现了一个HTTP Server,因此不需要额外的Web Server,只需要运行Python脚本即可启动整个应用。
在Tornado框架中,一个URI对应一个RequestHandler,每一个Handler负责处理该URI的HTTP请求,GET、 POST、HEAD等HTTP方法对应Handler的get()、post()、head()等方法,HTTP请求的处理逻辑在相应的方法内实现。!!! Handler可以看做是Tornado框架里的Controller。
RequestHandler的write()方法,将字符串写入Response;render()方法将模板文件写入Response。
三、HelloWorld的进一步扩充
define()函数为脚本扩展命令行参数。
port参数是自定义的启动参数,其它参数均为框架自带的默认启动参数。
参考http://www.ltesting.net/ceshi/ceshijishu/xncs/2012/1009/205591.html
Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本。这个 Web 框架看起来有些像 web.py 或者 Google 的 webapp,不过为了能有效利用非阻塞式服务器环境,这个 Web 框架还包含了一些相关的有用工具 和优化。
Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其非阻塞的方式和对 epoll 的运用,Tornado 每秒可以处理数以千计的连接,这意味着对于实时 Web 服务来说,Tornado 是一个理想的 Web 框架。我们开发这个 Web 服务器的主要目的就是为了处理 FriendFeed 的实时功能 ——在 FriendFeed 的应用里每一个活动用户都会保持着一个服务器连接。(关于如何扩容 服务器,以处理数以千计的客户端的连接的问题,请参阅 C10K problem。)
二、hello world示例
Tornado的hello word是怎么来的?示例如下:
#! /usr/bin/env python #coding=utf-8 import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, world") application = tornado.web.Application([ (r"/", MainHandler), ]) if __name__ == "__main__": application.listen(8888) tornado.ioloop.IOLoop.instance().start()
运行后,使用浏览器访问IP:8888端口,即可出现hello word
浏览器打开 “http://ip:8888” 的时候,发出 “GET”请求,请求根目录”/”,
根据tornado.web.Application中参数列表中元组对(r’/’,MainHandler),于是找到MainHandler类,这个类继承了tornado.web.RequestHandler类,但是它里面没有定义get和post方法(具体可以看源码),所以在MainHandler类中定义。
Tornado框架自身实现了一个HTTP Server,因此不需要额外的Web Server,只需要运行Python脚本即可启动整个应用。
在Tornado框架中,一个URI对应一个RequestHandler,每一个Handler负责处理该URI的HTTP请求,GET、 POST、HEAD等HTTP方法对应Handler的get()、post()、head()等方法,HTTP请求的处理逻辑在相应的方法内实现。!!! Handler可以看做是Tornado框架里的Controller。
RequestHandler的write()方法,将字符串写入Response;render()方法将模板文件写入Response。
三、HelloWorld的进一步扩充
#! /usr/bin/env python #encoding:utf8 import tornado.ioloop import tornado.web import tornado.options import tornado.httpserver from tornado.options import define, options define ('port', default=8000, help='run on the given port', type=int) class MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, world") def main(): tornado.options.parse_command_line() app=tornado.web.Application( handlers=[ (r'/', MainHandler) ] ) http_server=tornado.httpserver.HTTPServer(app) http_server.listen(options.port) tornado.ioloop.IOLoop.instance().start() if __name__ == '__main__': main()
define()函数为脚本扩展命令行参数。
port参数是自定义的启动参数,其它参数均为框架自带的默认启动参数。
参考http://www.ltesting.net/ceshi/ceshijishu/xncs/2012/1009/205591.html
相关文章推荐
- Tornado Web服务器中处理空白字符的解决方案
- python为tornado添加recaptcha验证码功能
- 剖析Python的Tornado框架中session支持的实现代码
- Tornado Web服务器多进程启动的2个方法
- 高性能web服务器框架Tornado简单实现restful接口及开发实例
- Tornado服务器中绑定域名、虚拟主机的方法
- Python Web服务器Tornado使用小结
- tornado捕获和处理404错误的方法
- Web服务器框架 Tornado简介
- tornado把static_path指向到七牛
- 在Mopaas上部署WSGI类型的(Django, Tornado, Flask)Python应用
- tornado 源码初识
- tornado 源码分析 之 异步io的实现方式
- 实践,用tornado实现自定义协议server
- redis集群搭建
- 用Python(Tornado)模拟登录小米帐号
- nginx+tornado与nginx+go的性能测试
- tornado使用UIModule块
- tornado websocket 学习历程
- Tornado Application对象实例化时"debug=Ture"参数的作用原理