文档章节

翻译:introduce to tornado - introduce

f1eming
 f1eming
发布于 2013/03/13 16:25
字数 1377
阅读 803
收藏 3

介绍:

tornado是由python写出来的一个性能强大、扩展性强的web服务器。它能够处理巨大的网络流量并发请求,它是一个轻量级的框架,可以很容易地进行配置、添加功能、集成不同应用和工具。

最初我是通过 Bret Taylor 了解到FriendFeed使用tornado这个web服务器框架,后来FaceBook将FriendFeed收购之后将其开源出来。与最多只能承受10000并发连接的传统服务器框架不同,tornado设计之初就考虑到了性能问题,它就是为了解决C10K问题而设计的,因此,它是一个性能非常强大的框架,同时它还集成了很多工具来处理安全性、用户身份验证、社交网络的问题,tornado还有着不错的异步通信技术与外部接口进行交互,比如数据库和web的api接口。从2009年9月10日发布至今,tornado已经获得了大量的社区支持,并且增加了大量的应用扩展,除了FriendFeed和Facebook,还有许多公司也将其投入到生产环境中使用,包括Quora, Turntable.fm, Bit.ly , Hipmunk 和MyYearbook,等等。

 扩展阅读:C10K问题

类似于apache这种基于线程的服务器,为了处理每一个传入的HTTP连接请求,需要维护一个系统连接池,Apache会将每一个HTTP连接请求放入到连接池中,尽管Linux有着不同的发行版,但是大多数的发行版的默认线程堆栈只有8MB,Apache的架构在出现大量的长连接时,需要维护一个庞大的连接池,以便与每一个连接进行信息交互,这会占用大量的服务器内存,最终导致Apache性能负载过大而崩溃。

大多数社交网络应用都需要实时地显示更新信息、状态改变、用户通知等,这要求客户端和服务器保持长连接以便随时响应服务器的请求。这样的HTTP长连接和服务器推送的请求会很快地使Apache的线程池达到峰值,一旦线程池耗尽,服务器将无法再响应新的连接请求。

异步服务器是一个非常新的应用平台,他们是为了解决基于线程的web服务器的局限性而产生的。这些服务器有node.js,lighttpd,tornado,他们能够通过多进程协作优雅地解决大规模负载增加的问题,就是说异步服务器将会准确地响应来自数据或其它数据源的请求(例如:数据库查询或http请求)。当需要处理数据时,异步服务器会使用回调函数恢复一个已经挂起的操作,完成数据推送。在第五章我们将会讨论这个回调模式的许多异步应用特性。

 

总而言之,如果你正在寻找一个替换巨大的CMS或者一体化的开发框架,tornado也许不是一个最好的选择,tornado不适合用于配置一个巨大的模型或处理这一类特定模式的工作。tornado可以做到的仅仅只是让你非常轻松且快速地搭建web应用,如果你想要使用python快速地创建一个简单、可扩展的社交应用、实时的分析引擎、请求。那么这本书非常适合你。

 

tornado入门指南:

在大多数*nix系统下,安装和配置tornado是非常容易的,你只需要通过PyPI(easy_install或pip)即可完成安装,或者像这样从git下载并创建也可以:

  1. $ curl -L -O http://github.com/downloads/facebook/tornado/tornado-2.1.1.tar.gz   
  2. $ tar xvzf tornado-2.1.1.tar.gz   
  3. $ cd tornado-2.1.1   
  4. $ python setup.py build   
  5. $ sudo python setup.py install  

tornado没有正式支持windows的版本,但是他可以通过 PyPM这个软件包管理工具进行安装:

  1. C:\> pypm install tornado  

 

一旦你完成tornado的安装,就可以开始以你最好的状态进行工作了!安装包中有大量的demo可供学习,它包含以下例子:一个blog、一个简单的facebook、一个聊天室等等,我们将会在稍后一步一步的去学习这本书的内容,但我仍然建议你在看书之后查看这些参考的Demo。

在后面的实例中,我们假设你使用的是unix的系统,安装了python2.6或2.7。如果是这样,你不需要再安装额外的标准库,就可以运行tornado。如果你安装的是版本低于python2.5,建议你再多安装: pycURL, simpleJSON 的开发包。tornado2.0已经开始支持python3.2以上的版本,但是tornado团队仍然建议你不要使用,因为目前还在收集tornado在python3.2以上的版本出现的缺陷。

社区和支持:

对于问题、例子以及一般的指南,官方的tornado文档是一个很不错的地方,那里有各种各样的例子和功能特性的缺陷文档。tornadoweb.org上你可以看到非常详细的更新文档。而在facebook的github仓库上你可以获取到最新版本的tornado源代码。更多的问题,你可以访问tornado在google group上面的讨论组,那上面每天都非常活跃。

 下一篇:译:introduce to tornado - a simple example

© 著作权归作者所有

f1eming

f1eming

粉丝 10
博文 8
码字总数 38345
作品 0
深圳
程序员
私信 提问
加载中

评论(2)

h
hiying
感谢翻译
wireshark
wireshark
过来拜读谢谢翻译
翻译:introduce to tornado - a simple example

简单的web services: 现在我们将开始了解什么是tornado,tornado可以做什么。我们来通过分析tornado实现的一个简单web service 例子开始吧。 Hello Tornado tornado 是一个可以处理http请求...

f1eming
2013/03/13
752
2
翻译:introduce to tornado - Databases

在这一章,我们将会给出几个关于tornado web应用如何使用数据库的例子。首先我们将会通过一个简单的RESTful API的例子,结合之前的练习Burt’s Book网站,一步一步去创建一个具有完整功能的B...

f1eming
2013/04/19
778
0
翻译:introduce to tornado - form and template

在上一章节中,我们看到了如何使用tornado去创建和配置一个简单的web应用。我们学习了:handlers、http方法和tornado的整体框架结构。在这个章节,我们将要开始学习如何在web应用中使用更多更...

f1eming
2013/03/13
826
0
翻译:introduce to tornado-Asynchronous Web Services

异步的web请求 迄今为止,我们通过tornado这个强大的框架的功能创建了很多web应用,它简单,易用,它有足够强大的理由让我们选择它做为一个web项目的框架.我们最需要使用的功能是它在服务端的异步...

f1eming
2013/05/16
4.3K
7
翻译: introduce to tornado - Writing Secure Appli...

编写加密的应用 很多时候,加密应用是一件非常繁琐的事情(也很让开发人员头疼).tornado 的web服务端设计之初已经考虑到了这些事情,内置了很多加密模块,让我们可以轻松地对容易出现问题的地方进...

f1eming
2013/06/07
578
0

没有更多内容

加载失败,请刷新页面

加载更多

PCB设计-Allegro软件入门系列-铺铜操作(下)

铺铜是PCB很常见的操作,PCB的敷铜一般都是覆地铜,增大地线面积,有利于地线阻抗降低,使电源和信号传输稳定,在高频的信号线附近敷铜,可大大减少电磁辐射干扰,起屏蔽作用。 本讲讲解啊一...

demyar
26分钟前
4
0
如何通过WASI SDK 在Linux上编译ZXing C++

Mozilla在今年三月份的时候公布了WASI。WASI的目标就是让WebAssembly在任何地方都可以运行,而不仅仅像现在这样只能运行在Node.js和Web浏览器中。WASI目前依然处于初级阶段,这篇文章分享下如...

yushulx
28分钟前
3
0
.Net界面开发神器—DevExpress官方汉化包免费下载!还在等什么?

点击获取DevExpress v19.1.7新版试用下载 DevExpress Localization Service允许您创建一组自定义的附属程序集,要将语言包添加到程序集中,请查看本文中为大家列出的对应版本的汉化包,下载并...

FILA6666
28分钟前
4
0
php生成二维码

        header('Content-Type: image/png');        //清除缓冲区,防止之前面不知道的情况下被加头部信息导致不显示图片内容        ob_clean();        $...

横着走的螃蟹
33分钟前
3
0
伪类和伪元素

伪类和伪元素 伪类和伪元素,对于绝大多数同学来说,都是耳熟能详的名字,但确实又有很多人搞不清楚它们之间的区别,以致于混淆概念。而当概念都混淆的时候,也往往意味着你不会经常使用它,...

不负好时光
36分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部