引言

回想Django的部署方式

以Django为代表的python web应用部署时采用wsgi协议与服务器对接(被服务器托管),而这类服务器通常都是基于多线程的,也就是说每一个网络请求服务器都会有一个对应的线程来用web应用(如Django)进行处理

考虑两类应用场景

  1. 用户量大,高并发

    如秒杀抢购、双十一某宝购物、春节抢火车票

  2. 大量的HTTP持久连接

    使用同一个TCP连接来发送和接收多个HTTP请求/应答,而不是为每一个新的请求/应答打开新的连接的方法。

    对于HTTP 1.0,可以在请求的包头(Header)中添加Connection: Keep-Alive

    对于HTTP 1.1,所有的连接默认都是持久连接。

对于这两种场景,通常基于多线程的服务器很难应对。

C10K问题

对于前文提出的这种高并发问题,我们通常用C10K这一概念来描述。C10K—— Concurrently handling ten thousand connections,即并发10000个连接。对于单台服务器而言,根本无法承担,而采用多台服务器分布式又意味着高昂的成本。如何解决C10K问题?

Tornado

Tornado在设计之初就考虑到了性能因素,旨在解决C10K问题,这样的设计使得其成为一个拥有非常高性能的解决方案(服务器与框架的集合体)。

1.1 Tornado是为何物

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

特点:

  • 作为Web框架,是一个轻量级的Web框架,类似于另一个Python web框架Web.py,其拥有异步非阻塞IO的处理方式。
  • 作为Web服务器,Tornado有较为出色的抗负载能力,官方用nginx反向代理的方式部署Tornado和其它Python web应用框架进行对比,结果最大浏览量超过第二名近40%。

性能: Tornado有着优异的性能。它试图解决C10k问题,即处理大于或等于一万的并发,下表是和一些其他Web框架与服务器的对比:

Tornado框架和服务器一起组成一个WSGI的全栈替代品。单独在WSGI容器中使用tornado网络框架或者tornaod http服务器,有一定的局限性,为了最大化的利用tornado的性能,推荐同时使用tornaod的网络框架和HTTP服务器

Tornado是为何物相关推荐

  1. tornado 简易教程

    引言 回想Django的部署方式 以Django为代表的python web应用部署时采用wsgi协议与服务器对接(被服务器托管),而这类服务器通常都是基于多线程的,也就是说每一个网络请求服务器都会有 ...

  2. python tornado教程_Tornado 简单入门教程(零)——准备工作

    前言: 这两天在学着用Python + Tornado +MongoDB来做Web开发(哈哈哈这个词好高端).学的过程中查阅了无数资料,也收获了一些经验,所以希望总结出一份简易入门教程供初学者参考.完 ...

  3. python中tornado的第一个例子

    python中tornado的第一个例子 1  先安装tornado pip install tornado 2 新建tor.py 记住不能建立 tornado.py 这样的名字  不然会报错 Imp ...

  4. tornado+nginx上传视频文件

    [http://arloz.me/tornado/2014/06/27/uploadvideotornado.html] [NGINX REFRER: Nginx upload module] 由于t ...

  5. tornado源码分析

    tornado源码分析 本源码为tornado1.0版本 源码附带例子helloworld import tornado.httpserver import tornado.ioloop import ...

  6. Tornado自定义分布式session框架

    Tornado自定义分布式session框架 一.session框架处理请求执行的流程: 1.服务器端生成随机的cookie字符串 2.浏览器发送请求,服务器将cookie返回给浏览器. 3.服务器在 ...

  7. tornado 入门

    Overview FriendFeed是一款使用 Python 编写的,相对简单的 非阻塞式 Web 服务器.其应用程序使用的 Web 框架看起来有些像 web.py 或者 Google 的 weba ...

  8. python web项目案例教程_Python Web开发案例教程(慕课版)——使用Flask、Tornado、Django...

    第1章 Web开发基础1 1.1 Web概述 2 1.1.1 什么是Web 2 1.1.2 Web应用程序的工作原理 2 1.1.3 Web的发展历程 2 1.2 Web前端开发基础 4 1.2.1 ...

  9. sae python连接mysql_SAE Tornado 应用连接并使用 Mysql

    今天因为要提供几个开放的接口给我毕设相关的平台调用,所以又开始折腾之前在SAE上搭的Tornado应用. 之前记录过一个 如何在 SAE 上使用 Tornado,这次续上,关于在SAE里使用Torna ...

最新文章

  1. Spring Cloud第九篇:链路追踪Sleuth
  2. R可视化绘制对数正态分布(Log Normal Distribution)
  3. c#json对象转数组_数组和对象的区别
  4. endnote一打开就自动关闭_word mac版如何彻底删除endnote插件?mac版word移除endnote加载项的方法...
  5. 设计模式:命令模式(Command)
  6. 5月19-20日的上海 来一次纯粹的WebRTC之旅
  7. c均值算法的设计与实现_如何使用C链表实现 LRU 算法
  8. 【翻译】ANDROID KTX – 使用Kotlin进行Android开发
  9. 查看daemon使用技巧
  10. asp.net2.0学习历程 菜鸟到中级程序员的飞跃[z转]
  11. 交待给你的事办完了,就不能回个话么?
  12. 温度转换问题——从C到Python
  13. 牛牛的旅游纪念品 动态规划背包问题
  14. 流体动力润滑(轴承油膜承载机理)
  15. 分贝、电平、增益、音高、音分、声能、声强、声压...
  16. Kotlin-Android世界的一股清流-Class类
  17. 远程服务器用户多开,服务器安全之修改远程桌面限制同一用户使用同一个会话。一个用户只开一个会话禁止多开。...
  18. 冶化工业计算机模拟仿真工作,工业仿真,工业三维虚拟仿真技术平台 - 【中视典数字科技】...
  19. 【考研计算机组成原理】课堂笔记目录汇总——知识点清晰
  20. 视频教程-Bootstrap3从基础到案例实战,完美实现响应式网站案例-Bootstrap

热门文章

  1. Android进阶:自定义视频播放器开发(下)
  2. mysql linux64安装----转载
  3. 从地理围栏看物联网安防
  4. fasterflect-vs-hyperdescriptor-vs-fastmember-vs-reflection/
  5. Spring.Net学习笔记九(自定义对象行为)
  6. 让IE支持HTML5
  7. iptables之NAT
  8. Oracle数据库的备份与恢复技术
  9. 计算机技能大赛图形试题,图形图像处理技能大赛竞赛试题试卷.doc
  10. npm切换淘宝源,yarn切换淘宝源