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()

原文地址:https://blog.51cto.com/14473726/2434794

时间: 2024-08-03 12:23:37

Tornado框架简介的相关文章

Tornado框架简介(二)

--------------------Application--------------------1.settings1.debug=True:,设置tornado是否工作在调试模式,默认为False即工作在生产模式.当设置debug=True 后,tornado会工作在调试/开发模式,在此种模式下,可以根据设置修改tornado提供的其他几种特性 2.autoreload=True:自动重启,tornado应用会监控我们的源代码文件,当有改动保存后便会重启程序,这可以减少我们手动重启程序的

Django框架简介,wsgiref 与 jinja2 模块

目录 框架简介 wsgiref模块 jinja2 模块 框架简介 Django是一个web开发框架,用来开发web应用,本质就是, web框架+socket服务端 MVC框架和MTV框架 MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分: 模(Model).视图(View)和控制器(Controller),具有耦合性低.重用性高.生命周期成本低等优点. Django框架的设计模式借鉴了MVC框架的思想,也是分成三部分,来降低各个

Apache—DBUtils框架简介

转载自:http://blog.csdn.net/fengdongkun/article/details/8236216 Apache—DBUtils框架简介.DbUtils类.QueryRunner类 .ResultSetHandler接口 commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能.因此dbutils成为很多不喜欢hibernat

OSGi原理与最佳实践:第一章 OSGi框架简介(2)

OSGi原理与最佳实践:第一章 OSGi框架简介(2) 由  ValRay 发布 已被浏览4884次 共有3条评论 已被3个人收藏 2013-08-16 21:23 顶(0) 踩(0) osgi原理与最佳实践 1.1.4 开发传统类型的应用 1.1.4.1 B/S 我们首先来看一下,如何基于 OSGi 来开发 B/S 结构的应用.B/S 结构应用程序的开发,可有两个选择:一个是在 OSGi 的框架中嵌入 Http 服务器,另外一个是在 Servlet 容器中嵌入 OSGi 框架.下面分别介绍这两

OSGi原理与最佳实践:第一章 OSGi框架简介(5)Spring-DM

OSGi原理与最佳实践:第一章 OSGi框架简介(5)Spring-DM 由  ValRay 发布 已被浏览8409次 共有3条评论 已被2个人收藏 2013-08-16 21:29 顶(1) 踩(0) osgi原理与最佳实践 1.3 Spring-DM 1.3.1 简介 Spring-DM 指的是 Spring Dynamic Modules.Spring-DM 的主要目的是能够方便地将 Spring 框架 和OSGi框架结合在一起,使得使用Spring的应用程序可以方便简单地部署在OSGi环

Hibernate框架简介(二)基本使用增、删、改、查

一.Hibernate框架简介 Hibernate是一个优秀的Java持久化层解决方案,是当今主流的对象-关系映射(ORM,ObjectRelationalMapping)工具 1.1.理解持久化 瞬时状态:在程序运行的时候,有些程序数据是保存在内存中,当程序退出后,这些数据就不复存在了,所以称这些数据的状态为瞬时状态 持久状态:在使用一此软件的时候,有些数据,在程序退出后,还以文件等形式保存在硬盘或者数据库中,称这些数据的状态是持久状态 持久化:持久化就是将程序中的数据在瞬时状态和持久状态之间

Hibernate框架简介

面试被问及了Hibernate框架,虽然问的很少,很简单,但是还是简单的总结一下吧,以备以后不时之需. 什么是Hibernate框架? 百科定义:Hibernate框架式一个开源的对象关系映射(ORM)框架,是对JDBC的轻量级的对象封装,使java程序员可以使用对象思维来操纵DB. 白话版:在Hibernate之前,我们是如何操作DB的?JDBC,需要在程序中嵌入SQL语句.效率低下,不能忍啊.但是Hibernate的出现,让我们无需再操纵SQL语句了,每个表实例被实例化为一个java对象,操

关于Struts框架简介

一,什么是框架? 所谓框架就是提供了一组统一的接口和编程方式的可以重用组件,同时我们可以在框架中扩充我们自己的特定逻辑. 二,MVC设计模式 将应用程序分为3个部分:模型 Model,视图View,控制器Controller: 模型组件:负责业务逻辑: 模型包含应用程序的核心功能.模型封装了应用程序的状态.有时它包含的唯一功能就是状态.它对视图或控制器一无所知. 视图组件:负责表示业务范围的视图: 视图提供模型的表示.它是应用程序的 外观.视图可以访问模型的读方法,但不能访问写方法.此外,它对控

第二百七十一节,Tornado框架-CSRF防止跨站post请求伪造

Tornado框架-CSRF防止跨站post请求伪造 CSRF是什么 CSRF是用来在post请求时做请求验证的,防止跨站post请求伪造 当用户访问一个表单页面时,会自动在表单添加一个隐藏的input标签,name="_xsrf",value="等于一个密串" 当用户post请求提交数据时,会将_xsrf的密串提交到后台,后台会判断这个密串存在就允许提交数据,否则不允许提交 进行CSRF验证只需要两步 1.在框架配置字典里开启CSRF验证,开启后会自动接收post