1-Tornado的介绍

1 tornado的介绍

python 复制代码
**Tornado**是一个用Python编写的可扩展的、无阻塞的**Web应用程序框架**和**Web服务器**。
它是由FriendFeed开发使用的;该公司于2009年被Facebook收购,而`Tornado`很快就开源了

龙卷风以其高性能着称。它的设计允许处理大量并发连接,`Tornado`在设计之初就考虑到了性能因素,
旨在解决`C10K`(同时处理一万个连接的缩写)问题,这样的设计使得其成为一个拥有非常高性能的框架。
此外,它还拥有处理安全性、用户验证、社交网络以及与外部服务(如数据库和网站API)进行异步交互的工具

基于线程的服务器,比如Apache,为了传入的连接,维护了一个操作系统的线程池。
Apache会为每个HTTP连接分配线程池中的一个线程,如果所有的线程都处于被占用的状态并且尚有内存可用时,
则生成一个新的线程。尽管不同的操作系统会有不同的设置,大多数Linux发布版中都是默认线程堆大小为8MB。
Apache的架构在大负载下变得不可预测,为每个打开的连接维护一个大的线程池等待数据极易迅速耗光服务器的内存资源。

2 而为什么会有这么大的负载呢?服务器同时要对许多客户端提供服务,而服务器端的处理流程,只要遇到了I/O操作,往往需要长时间的等待。

python 复制代码
整个流程52ms,中间50ms是在等待耗时操作结束,这段时间服务进程的CPU是空闲的,浪费掉了。

换个角度看,是CPU在各个流程间跳来跳去,专门处理那些红色的片段。
这种模式下,服务进程有效利用了等待时间,实际花费的只是一头一尾两段真正占用CPU的时间。这样服务进程每秒可以处理的请求可成几十倍的增长。



而这样的模式,就是在一个进程之间同时处理多个协程,充分利用CPU时间,这就是我们需要的异步编程。

而`Tornado`就是可以支持异步非堵塞IO模式


相关推荐
全栈练习生9 小时前
AI Agent 沙箱
python·ai
SEO_juper10 小时前
用 Python 写一个 GEO 可见性检查脚本:你的网站现在能被 AI 引用吗
开发语言·人工智能·爬虫·python·seo·外贸独立站
用户83562907805111 小时前
使用 Python 对 Excel 工作表进行排序
后端·python
for_ever_love__12 小时前
MySQL 全文索引实战:FULLTEXT、ngram 中文分词与 MATCH AGAINST 到底该怎么用
java·python·mysql·全文检索·分词·索引·ngram
用户83562907805112 小时前
使用 Python 合并 PowerPoint 演示文稿
后端·python
weixin_4617694012 小时前
VS Code 中创建 Jupyter 文件(.ipynb)
ide·python·jupyter
2601_9669496512 小时前
多市场量化策略的数据接口应该如何设计:从数据层架构到策略接入
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
全栈弄潮儿13 小时前
Python实战第1期:Python环境搭建与第一个程序
python
心易行者13 小时前
Agent应用+API端点商业化进阶实战:从单体智能体到可付费调用的API全流程
运维·服务器·人工智能·python·apache
weixin1997010801613 小时前
《1688图片空间API踩坑:img.upload 与 album.* 的防盗链与CDN缓存问题》(附Python源码)
开发语言·python·缓存