Tornado
来源:互联网 发布:阿里云客户端下载 编辑:程序博客网 时间:2024/05/18 17:02
Tornado读作托~内斗
Tornado既是一个web server,也是web framework。而它作为web server 采用的是asynchronous IO的网络模型,这是一种很高效的模型。
web framework的定义(http://wiki.python.org/moin/WebFrameworks)
A Web framework is a collection of packages or modules which allow
developers to write Web applications or services without having to
handle such low-level details as protocols, sockets or process/thread
management.
Tornado作为web server,提供了web framework的api,可以来直接构建自己的web程序。同时,Tornado支持WSGI ( http://www.python.org/dev/peps/pep-0333/ ),也就是说它可以有能力其它的一些python的框架一起使用,比如django, bottle, flask等。不妨看下bottle在不同server下的性能评测,其中就有tornado( http://bottlepy.org/page/2009-12-19_Comparing_HelloWorld_Performance )。额外说的是,WSGI的框架是不支持异步的,所以如果有异步调用的逻辑的web程序,Tornado也是选择之一。
没有使用过Node.js,但官网说:
Node.js is a platform built on Chrome’s JavaScript runtime for easily
building fast, scalable network applications.
可以把Node.js理解成基于V8的javascript运行环境或工具包,它属于偏底层的抽象,扩展了javascript写服务端程序的能力。所以基于它也会有不同的web framework。从这个角度来看,Node.js和Tornado其实不在一个层次上。
不过相同的是 Node.js 和 Tornado都采用的的单进程单线程异步IO的网络模型。它们都可以写异步非阻塞的程序,不过我觉得因为javascript的语言特性,Node.js对异步回调非阻塞的风格坚持比Tornado更彻底一点。不过通常多进程时,一个进程的短时间阻塞也是可以接受的。
使用Nginx是因为一些单进程服务无法利用多核CPU,同时也会有单机的限制,所以通常会在多个服务器启动多个进程实例,使用Nginx在前端作为反向代理服务器来分发web请求,同时负载均衡。Nginx是C写的,有更好的并发性,可配置性,对静态文件也有更好的支持。当然这是Nginx的常用情景,其实也可以直接使用Nginx来构建web应用,可以参考OpenResty项目( http://openresty.org/ )。
其实网络模型、web server、web framework是三个不同层次,它们之间并不冲突,是选择的关系。理解前,不妨先理清概念:)
- tornado
- Tornado
- Tornado
- tornado
- Tornado
- tornado
- tornado
- Tornado
- tornado
- Tornado
- Tornado
- Tornado
- Tornado
- tornado
- Tornado简介
- asynchronous@tornado
- Tornado 安装
- Tornado 安装
- 人工智能、机器学习和深度学习三者怎么区别?
- Xcode的Swift项目中已经导入XMPPFramework编译仍出错:Use of undeclared type ‘XMPPStream’
- poj3321 Apple Tree
- 泛型
- MD5
- Tornado
- left join 关联相同两张表,并将关联表的分别两条数据,整体合并为一条
- 芒果db入门笔记
- mariaDB数据库gis数据库的一些操作
- sql left join inner right join 以及on 和where的条件顺序
- mariaDB数据库 gis 空间数据库
- Android 的 Activity 组件
- javascript 设计模式(史上最全设计模式详解)
- hdu5876Sparse Graph(求补图的最短路)