好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Tornado框架简介

1、概念: ? ? Tornado全称Tornado Web Server,是一个用Python语言写成的Web服务器兼Web应用框架,由FriendFeed公司在自己的网站FriendFeed中使用,被Facebook收购以后框架在2009年9月以开源软件形式开放给大众。

2、特点: ? ? 1、作为Web框架,是一个轻量级的Web框架,类似于另一个Python web框架Web.py,其拥有异步非阻塞IO的处理方式。

? ? 2、作为Web服务器,Tornado有较为出色的抗负载能力,官方用nginx反向代理的方式部署Tornado和其它Python web应用框架进行对比,结果最大浏览量超过第二名近40%。

3、性能: ? ? 1、Tornado有着优异的性能。它试图解决C10k问题,即处理大于或等于一万的并发

? ? 2、Tornado框架和服务器一起组成一个WSGI的全栈替代品。单独在WSGI容器中也可以使用

? ? 3、tornado网络框架或者tornaod http服务器,有一定的局限性,为了最大化的利用

-------------------Tornado与Django的区别------------------- 1、Tornado ? ? 1、Tornado走的是少而精的方向,注重的是性能优越,它最出名的是异步非阻塞的设计方式。

? ? 2、特点: ? ?1、HTTP服务器:Tornado框架和服务器一起组成一个WSGI的全栈替代品

? ?2、异步编程

? ?3、WebSockets

2、Django ? ? 1、Django是走大而全的方向,注重的是高效开发,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构、以及全功能的管理后台。

? ? 2、Django提供的方便,也意味着Django内置的ORM跟框架内的其他模块耦合程度高,应用程序必须使用Django内置的ORM,否则就不能享受到框架内提供的种种基于其ORM的便利。

? ? 3、特点: ? ?1、session功能

? ?2、后台管理

? ?3、ORM

-------------------Tornado安装 1、查看工作环境中是否安装 ? ? $ pip list

2、安装对应的tornado环境 ? ? 1、自动安装 ? ?$ pip install tornado

? ? 2、手动安装 ? ?1、下载安装包tornado-4.3.tar.gz(https://pypi.python.org/packages ... /tornado-4.3.tar.gz)

? ?2、$ tar xvzf tornado-4.3.tar.gz

? ?3、$ cd tornado-4.3

? ?4、$ python setup.py build

? ?5、$ sudo python setup.py install

3、安装对应的数据库操作环境 ? ? $ pip install trondb

-------------------Tornado基本模块 1、Tornado web 程序编写思路 ? ? 1、创建web应用实例对象,第一个初始化参数为路由映射列表。

? ? 2、定义实现路由映射列表中的handler类。

? ? 3、创建服务器实例,绑定服务器端口。

? ? 4、启动当前线程的IOLoop。

2、tornado.web ? ? 1、RequestHandler: ? ?封装了对应一个请求的所有信息和方法,write(响应信息)就是写响应信息的一个方法;对应每一种http请求方式(get、post等),把对应的处理逻辑写进同名的成员方法中(如对应get请求方式,就将对应的处理逻辑写在get()方法中),当没有对应请求方式的成员方法时,会返回“405: Method Not Allowed”错误。

? ? 2、Application: ? ?Tornado Web框架的核心应用类,是与服务器对接的接口,里面保存了路由信息表,其初始化接收的第一个参数就是一个路由信息映射元组的列表;其listen(端口)方法用来创建一个http服务器实例,并绑定到给定端口(注意:此时服务器并未开启监听)。

3、tornado.ioloop ? ? 1、tornado的核心io循环模块,封装了 Linux 的epoll和BSD的kqueue,tornado高性能的基石

? ? 2、 Linux 的epoll原理图

? ? 3、IOLoop.current(): ? ?返回当前线程的IOLoop实例。

? ? 4、IOLoop.start(): ? ?启动IOLoop实例的I/O循环,同时服务器监听被打开。

4、tornado.httpserver ? ? 实例: ? ?#coding:utf-8 ? ?#一个简单的Tornado web

? ?#引用对应的Tornado包 ? ?from tornado.web import Application,RequestHandler ? ?from tornado.ioloop import IOLoop ? ?from tornado.httpserver import HTTPServer

? ?class IndexHandler(RequestHandler):

? ?def get(self):

? ? self.write(‘hello word!‘)

? ?if name == ‘ main ‘: ? ?#创建一个app应用 ? ?app = Application([(‘/‘,IndexHandler)])

? ?#app.listen(‘8000‘) ? ?#为应用创建一个http服务 ? ?http_server = HTTPServer(app)

? ?#绑定对应的端口号 ? ?http_server.listen(8000)

? ?#开启多个tornado进程 ? ?#http_server.bind(8000) ? ?#http_server.start(4)

? ?IOLoop.current().start()

5、tornado.options ? ? 1、tornado.options模块——全局参数定义、存储、转换。

? ? 2、tornado.options.define() ? ?1、def define(name, default=None, type=None, help=None, metavar=None, ? ?multiple=False, group=None, callback=None):

? ?2、name 选项变量名,须保证全局唯一性,否则会报“Option ‘xxx‘ already defined in ...”的错误;

? ?3、default 选项变量的默认值,如不传默认为None;

? ?4、type 选项变量的类型,从命令行或配置文件导入参数的时候tornado会根据这个类型转换输入的值,转换不成功时会报错,可以是str、float、int、datetime、timedelta中的某个,若未设置则根据default的值自动推断,若default也未设置,那么不再进行转换。可以通过利用设置type类型字段来过滤不正确的输入。

? ?5、multiple 选项变量的值是否可以为多个,布尔类型,默认值为False,如果multiple为True,那么设置选项变量时值与值之间用英文逗号分隔,而选项变量则是一个list列表(若默认值和输入均未设置,则为空列表[])。

? ?6、help 选项变量的帮助提示信息,在命令行启动tornado时,通过加入命令行参数 --help 可以查看所有选项变量的信息(注意,代码中需要加入tornado.options.parse_command_line())。

? ? 3、tornado.options.options ? ?全局的options对象,所有定义的选项变量都会作为该对象的属性。

? ? 4、tornado.options.parse_command_line() ? ?1、进行对应的初始化

? ? 5、tornado.options.parse_config_file(path)

? ? 6、实例 ? ?#coding:utf-8 ? ?#一个简单的Tornado web

? ?#引用对应的Tornado包 ? ?from tornado.web import Application,RequestHandler ? ?from tornado.ioloop import IOLoop ? ?from tornado.httpserver import HTTPServer ? ?import tornado.options

? ?tornado.options.define("port",type=int,help="端口号")

? ?class IndexHandler(RequestHandler):

? ? def get(self):

? ?self.write(‘hello word!‘)

? ?if name == ‘ main ‘: ? ? tornado.options.parse_command_line()

? ? #创建一个app应用 ? ? app = Application([(‘/‘,IndexHandler)])

? ? #app.listen(‘8000‘) ? ? #为应用创建一个http服务 ? ? http_server = HTTPServer(app)

? ? #绑定对应的端口号 ? ? http_server.listen(tornado.options.options.port)

? ? #开启多个tornado进程 ? ? #http_server.bind(8000) ? ? #http_server.start(4)

? ? IOLoop.current().start()

查看更多关于Tornado框架简介的详细内容...

  阅读:23次