Tornado 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Tornado 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
Tornado 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
Tornado 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
Tornado 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 Apache
开发语言 Python 查看源码 »
操作系统 Windows
软件类型 开源软件
所属分类 服务器软件HTTP服务器
开源组织
地区 不详
投 递 者 不详
适用人群 未知
收录时间 2008-09-10

软件简介

Tornado是使用Python开发的全栈式(full-stack)Web框架和异步网络库,最早由Friendfeed开发。通过使用非阻塞IO,Tornado可以处理数以万计的开放连接,是long polling、WebSockets和其他需要为用户维护长连接应用的理想选择。

Tornado 跟其他主流的Web服务器框架(主要是Python框架)不同是采用epoll非阻塞IO,响应快速,可处理数千并发连接,特别适用用于实时的Web服务。

Tornado 主要分成四个部分:

  • Web 框架(包括 RequestHandler,用于创建Web程序的基类,以及各种支持类)

  • 实现 HTTP 的客户端和服务器端 (HTTPServerAsyncHTTPClient).

  • 一个异步网络库 (IOLoopIOStream)

  • 一个协程库(tornado.gen) ,使得异步调用代码能够以更直接的方式书写,取代回调链接

一个最简单的服务:

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

application = tornado.web.Application([
    (r"/", MainHandler),
])

if __name__ == "__main__":
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (10)

加载中
可能是数据库没有异步
2018/08/24 10:05
回复
举报
哪天试试
2018/07/31 22:50
回复
举报
是忙
2017/06/10 20:01
回复
举报
我正在用tornado,并发能力特别差, 加了线程池也是并发能力弱,不知道为什么?求大神,求解?
2017/05/16 10:49
回复
举报
Tornado 这是个好东西呀。
2012/07/18 15:30
回复
举报
Hi~ Tornado
2012/07/18 15:33
回复
举报
好东西 Tornado
2013/09/04 16:21
回复
举报
好使么? Tornado
2014/04/25 14:34
回复
举报
2016/02/24 09:24
回复
举报
python #Tornado#
2016/06/23 11:53
回复
举报
更多评论
发表于服务端专区
2018/01/07 07:46

Tornado 4.5.3 发布,Python Web 框架和异步网络库

Tornado 是使用 Python 开发的全栈式(full-stack)Web 框架和异步网络库,最早由 Friendfeed 开发。通过使用非阻塞 IO,Tornado 可以处理数以万计的开放连接,是 long polling、WebSockets 和其他需要为用户维护长连接应用的理想选择。 Tornado 4.5.3 已发布,更新如下: tornado.curl_httpclient Improved debug logging on Python 3. tornado.httpserver Content-Length and Transfer-Encoding headers are no longer sent w...

4
16
发表了资讯
2015/11/07 00:00

Tornado 4.3 正式版发布

Tornado 4.3 正式版发布了,该版本亮点: 1.正式支持Python3.5的async/await关键字,并且用老的Cython版本编译安装Tornado的时候也可以使用这两个关键字. 2.这将是最后一个支持Python2.6和Python3.2的版本,但是依旧PyPy3,哪怕PyPy3同时实现了Python3.2和Python3.3的功能.

4
11
发表了资讯
2015/05/28 00:00

Tornado 4.2 发布,Python Web 服务器

Tornado 4.2 发布, 更新内容如下: 向后兼容改进: SSLIOStream.connectand IOStream.start_tls now validate certificates by default. Certificate validation will now use the system CA root certificates instead ofcertifiwhen possible (i.e. Python 2.7.9+ or 3.4+) The default SSL configuration has become stricter, using ssl.create_default_context where available on the client side. The deprecated class...

5
33
发表了资讯
2014/07/16 00:00

Tornado 4.0 发布,Web 服务器

Tornado 4.0 发布,此版本值得关注的特性如下: The tornado.web.stream_request_body decorator allows large files to be uploaded with limited memory usage. Coroutines are now faster and are used extensively throughout Tornado itself. More methods now return Futures, including most IOStreammethods and RequestHandler.flush. Many user-overridden methods are now allowed to return a Futurefor flow contr...

18
23
发表了资讯
2013/03/30 00:00

Tornado 3.0 版本发布

Tornado web server 是使用Python编写出來的一个极轻量级、高可伸缩性和非阻塞IO的Web服务器软件,著名的 Friendfeed 网站就是使用它搭建的。 Tornado 跟其他主流的Web服务器框架(主要是Python框架)不同是采用epoll非阻塞IO,响应快速,可处理数千并发连接,特别适用用于实时的Web服务。 Tornado 3.0 版本发布,值得关注的改进有: The callback argument to many asynchronous methods is now optional, and these methods ...

11
23
发表了资讯
2011/06/23 00:00

Tornado 2.0 发布,Python编写的Web服务器

Tornado web server 是使用Python编写出來的一个极轻量级、高可伸缩性和非阻塞IO的Web服务器软件,著名的 Friendfeed 网站就是使用它搭建的。 Tornado 跟其他主流的Web服务器框架(主要是Python框架)不同是采用epoll非阻塞IO,响应快速,可处理数千并发连接,特别适用用于实时的Web服务。 Tornado 2.0 最大的改变: 1. 自动对模板输出进行转义(escaped),这会导致向后兼容的问题 2. 默认的 AsyncHTTPClient 实现改为 simple_h...

7
17
发表了资讯
2011/03/27 00:00

Tornado Web Server 1.2.1 发布

Tornado web server 是使用Python编写出來的一个极轻量级、高可伸缩性和非阻塞IO的Web服务器软件,著名的 Friendfeed 网站就是使用它搭建的。 要使用它,必须按照以下套件: 1)Python(建议使用Python 2.5 / Python 2.6) 2)Simplejson(建议使用simplejson 2.0.9) 3)cURL(建议使用curl 7.19.7或以上版本) 4)Pycurl(建议使用pycurl 7.16.2.1) 5)Tornado Web Server(这才是主角,版本就照官網上最新的安裝吧) 一个最...

0
2
发表了资讯
2010/07/24 00:00

Tornado 1.0 发布,Facebook实时网络框架

据国外媒体报道,Facebook于去年宣布开源的实时网络框架Tornado(tornadoweb.org)日前正式推出其1.0版本。 Tornado是用Pyhton语言开发的实时网络服务器,它支持上万的不间断连接,因此也支持以长轮询(long-polling)方式发布实时数据。这正是FriendFeed的核心所在。 在 技术上有所创新的FriendFeed由谷歌前雇员和实时网络社区的先驱人物共同创立,Facebook在2009年8月收购了该服务。Tornado大 部分由布莱特·泰勒(Bret Tayl...

6
7
发表了资讯
2009/09/13 00:00

Facebook宣布开源 Friendfeed实时技术

北京时间9月11日消息,据国外媒体报道,Facebook周四宣布,该公司已经将最近收购的社交媒体聚合网站Friendfeed的实时技术——Tornado开放源代码化。 Facebook高管大卫·瑞科多(David Recordon)发表博客文章称,Tornado能够同时处理数千个连接,非常适合用来开发实时Web服务,其优势在于速度和处理大量并发流量。 Facebook产品总监、FriendFeed联合创始人布莱特·泰勒(Bret Taylor)表示,Facebook之所以决定使Tornado成为开放源代...

4
2
发表了资讯
2009/09/11 00:00

Facebook发布开源Web Server 

Facebook发布了一个开源实时Web server。 被称为Tornado的 开源Web server用Python语言编写,设计能处理数千条同时发生的请求。Tornado与现有的用Python语言编写的Web框架类似,突出的是速度和 处理海量的同时发生的连接请求的能力。Facebook的开放程序主管David Recordon认为,开放Tornado的源代码,可以促进整个互联网的创新。

1
1
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2018/09/04 11:24

tornado

引言 回想Django的部署方式 以Django为代表的python web应用部署时采用wsgi协议与服务器对接(被服务器托管),而这类服务器通常都是基于多线程的,也就是说每一个网络请求服务器都会有一个对应的线程来用web应用(如Django)进行处理。 考虑两类应用场景 用户量大,高并发 如秒杀抢购、双十一某宝购物、春节抢火车票 大量的HTTP持久连接 使用同一个TCP连接来发送和接收多个HTTP请求/应答,而不是为每一个新的请求/应答打开新的...

0
0
发表了博客
2013/02/04 08:31

tornado

http://www.tornadoweb.cn/documentation https://github.com/facebook/tornado/tree/master/demos How I develop a tornado project http://lepture.com/work/tornado-project WTForms http://wtforms.simplecodes.com/docs/1.0.3/ Integrating SqlAlchemy with Tornado http://yashh.com/posts/2010/integrating-sqlalchemy-tornado/ Tornado with SQLAlchemy and wtForms http://lepture.com/work/tornado-ext SqlAlchemy us...

0
0
发表了博客
2019/08/01 10:35

Tornado

简介 Tornado全称Tornado Web Server,是一个用Python语言写成的Web服务器兼Web应用框架,由FriendFeed公司在自己的网站FriendFeed中使用,被Facebook收购以后框架在2009年9月以开源软件形式开放给大众。 Tornado与其他Web框架的区别 以Django为代表的python web应用部署时采用wsgi协议与服务器对接(被服务器托管),而这类服务器通常都是基于多线程的,也就是说每一个网络请求服务器都会有一个对应的线程来用web应用(如Djang...

0
0
发表了博客
2013/12/07 12:58

tornado

一. Tornado是什么? Facebook发布了开源网络服务器框架Tornado,该平台基于Facebook刚刚收购的社交聚合网站FriendFeed的实时信息服务开发而来.Tornado由Python编写,是一款轻量级的Web服务器,同时又是一个开发框架。采用非阻塞I/O模型(epoll),主要是为了应对高并发 访问量而被开发出来,尤其适用于comet应用。 二. 为什么要阅读Tornado的源代码 Tornado由前google员工开发, 代码非常精练, 实现也很轻巧, 加上清晰的注释和丰富...

0
2
发表了博客
2018/07/23 14:55

tornado

引言 回想Django的部署方式 以Django为代表的python web应用部署时采用wsgi协议与服务器对接(被服务器托管),而这类服务器通常都是基于多线程的,也就是说每一个网络请求服务器都会有一个对应的线程来用web应用(如Django)进行处理。 考虑两类应用场景 用户量大,高并发 如秒杀抢购、双十一某宝购物、春节抢火车票 大量的HTTP持久连接 使用同一个TCP连接来发送和接收多个HTTP请求/应答,而不是为每一个新的请求/应答打开新的...

0
0
发表于软件架构专区
2015/11/04 10:54

Tornado

Tornado是使用Python开发的全栈式(full-stack)Web框架和异步网络库,最早由Friendfeed开发。通过使用非阻塞 IO,Tornado可以处理数以万计的开放连接,是long polling、WebSockets和其他需要为用户维护长连接应用的理想选择。 Tornado 跟其他主流的Web服务器框架(主要是Python框架)不同是采用epoll非阻塞IO,响应快速,可处理数千并发连接,特别适用用于实时的Web服务。 Tornado 跟其他主流的Web服务器框架(主要是Python框架...

0
1
发表了博客
2020/03/25 09:51

tornado

1.说明(异步非阻塞框架)   特点:自带socket,可以不用wsgi      原生支持websocket协议      组件支持少,不提供session,orm,form,admin,只提供路由系统,视图函数,模板渲染,加密cookie   使用特性:生成器,装饰器,future对象   适用场景:     -服务端做的计算操作耗时导致并发能力低(CPU密集型),tornado无能为力     -如果服务端接受请求后,要想别的应用发送IO请求,导致并发能力低,tor...

0
0
发表了博客
2016/02/24 09:26

tornado

Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本。这个 Web 框架看起来有些像web.py 或者 Google 的 webapp,不过为了能有效利用非阻塞式服务器环境,这个 Web 框架还包含了一些相关的有用工具 和优化。 项目地址 http://www.tornadoweb.cn/

0
1
2020/03/29 20:35

03 | Tornado源码分析:Hello Tornado

点击“python编程军火库”,“置顶”公众号重磅干货,第一时间送达 正文共:800 字 3 图 预计阅读时间:2 分钟 曾几何时,我们学习一门新语言的时候都是从编辑输出“hello,word”开始的,今天我们就使用Tornado来写一个简单的web 应用程序,在页面输出“hello Tornado”. 我们看一下效果: # -*- encoding: utf-8 -*- # !/usr/bin/python """ @File    : hello_tornado.py @Time    : 2020/3/29 17:00 @Author...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了问答
2014/07/02 09:56

Python Tornado 如何清除浏览器缓存

请教一下各位Python的朋友,如何清浏览器缓存的问题,请指教,谢谢!

3
0
2018/09/28 08:52

python2.7 下 的pyhook不间断卡住问题

直接上代码: 环境:windowXP、7、10 问题现象:Pyhook启动后,如果静置一段时间后,大约5分钟以上,Hook出现卡住现象,过好一会才有反应,如果不间断有按键输入的话,出现卡住的概率就很低。 详情: tornado、python2.7 pyhook、 做了一个本地Python版的收银系统,利用 concurrent.futures.ProcessPoolExecutor 启动了若干个进程,其中一个进程为单独跑pyhook,工作的内容主要有: 1、监听快捷键唤醒 2、监听并过滤扫码枪扫描到...

2
0
发表了问答
2017/03/17 09:57

Tornado 和 Gunicorn 有什么区别和联系吗?

我看 Gunicorn 是可以提供类型位 tornado 的 worker_class 的。 但二者到底是有什么区别和联系吗? 不都是用来跑 Python 的服务器吗?

2
0
发表了问答
2017/02/20 14:15

tornado官网说是非阻塞的,如何用tornado来拉起flask应用,使flask支持多线程?

直接上示例: flask应用代码如下:flask_app.py from flask import Flask import time app = Flask(__name__) @app.route('/') def hello_world(): result = bingloop(10000000) return result @app.route('/a') def hi_world(): return "hi,world" def bigloop(number): for i in range(0,number): print i return "done" if __name__ == '__main__': app.run(host='0.0.0.0',debug=True) tornado代码如下: from tornado.wsgi...

3
1
发表了问答
2015/09/09 10:28

如何在Mopaas上,创建部署WSGI类型的(Django, Tornado, Flask)Python应用 ?

第一部分:安装必要工具。 1.因为这是部署Python开发环境,所以安装pip可以简化一些软件的安装过程。(PIP对应Lua的luarocks) sudo apt-get install python-pip 安装三个Python框架 sudo pip install flask sudo pip install django==1.5.1 sudo pip install tornado==3.1.1 2.安装Gunicorn,这是运行Python的WSGI HTTP服务。 sudo pip install gunicorn 3.Virtualenv, 安装这个是因为,在部署Django的时候,使用了不同的版本...

2
0
发表了问答
2016/03/02 10:58

自己动手写web服务器

项目主要实现一个脚本启动即可当web服务器使用,目前封装web服务器常用功能。 欢迎加群一起学习进步: 339711102 (it民工群) 项目代码 https://git.oschina.net/feimat/fastpy 本项目尽量少使用语言原生库,期望网友一起开发不同语言版本 第一步: 首先要有个处理网络异步io的模块 这一步相信大部分做后台开发的程序员都做过,模式大同小异,处理流程如下 第二步: 支持多平台 第一步中的 epoll_fd用一个跨平台的事件通知类ev_...

1
13
发表了问答
2015/09/14 19:59

使用tornado 做一个 webssh

因为云计算业务需求,需要搞一个浏览器上使用linux 终端的需求,于是花一天时间写了一个雏形,由于不善于写前段加最近比较忙,前段下周末再美化,欢迎大家拍砖 地址:https://github.com/xsank/webssh 原理: 由于模拟终端,所以对于类似top的命令会有服务器主动推送的情况,这里使用了tornado的websocket功能 而由于ssh连接需求,这里使用了paramiko第三方ssh库,所以在程序跑起来的时候,功能更像是一个代理 前段终端界面模拟...

11
2
发表了问答
2016/03/07 10:33

django程序同步锁问题

我的程序是个自动化程序,会在运行过程当中检查用户是不是进行了某个配置操作,如果没有则后台程序自动去修改xml配置文件完成自动配置。 因为平台是多用户操作,所以我必须保证如果有多个用户都修改这个配置文件时,只能有一个用户操作,其他用户等待。 请问,这个同步锁该怎么加,我想加在修改配置文件的方法上,我用的是django1.6.11进行开发,使用tornado4.1.x服务器进行部署,使用frigga守护进程来管理tornado服务器的运行状...

1
2
发表了问答
2015/08/28 14:34

请教 peewee 与 异步mysql库 tornado_mysql的整合问题

想要在tornado项目中实现mysql 异步,找了几个mysql异步的库,本来使用ORM peewee 和pymyql 实现mysq操作,但是是同步的,现在想要使用异步的mysql库(tornado_mysql) 不知道有没有高人用过?请教一下该如何实现? 想要保留peewee,想实现peewee与tornado_mysql(异步mysql 库) 整合。 如果不用peewee 项目很多部分就要重写了。。各位大侠求帮助。。。...

4
0
发表了问答
2015/10/25 16:51

使用tornado制作的web版留言板

留言板 Python Web框架Tornado入门练习小项目:留言板 项目地址:https://github.com/su-kaiyao/mes-board 望支持,给我的Github项目一个star 已经实现的功能: 用户的注册与登录,包括昵称,密码等合法性要求的检查 主要功能:用户登录后,进行留言 用户留言信息的显示:用户名,客户端ip,留言内容,留言时间 回复功能 留言数量过多,会自动分页显示功能 仪表盘,统计站点用户数量和留言数量 站点展示: 站点后台采用tornado...

1
2
发表了问答
2015/10/11 19:26

tornado 模板中如何使用datetime.datime.strptime函数

大家好,今天遇到一个问题! 就是在tornado模板中需要转换日期字符串的格式! 例如,收到的字符串是'2015-10-11',我需要转换成'Oct 11, 2015' 我用的是strptime和strftime两个函数! 具体如下: datetime.datetime.strptime('2015-10-11', "%Y-%m-%d").strftime("%b %d, %Y") 在tornado模板我看到datetime关键字是指的是python中的datatime模块,然后我在tornado模板中写了这么一句代码: <time class="entry-date">{{ dateti...

4
0
发表了问答
2015/09/14 17:25

如何在MoPaaS创建部署WSGI类型的Python应用?

6
0
发表了问答
2015/05/03 11:31

python/tornado一般如何控制流程?

主要是靠raise Error 来控制还是返回值的方式?生产环境下一般使用自定义的Error吗

1
0
发表了问答
2015/05/08 17:25

tornado的每次访问handler都会实例化一个RequestHandler吗?

我有一个BaseHandler继承了RequestHandler,然后具体handler继承Base,然后发现Base的__init__在每次访问时都会被调用,是不是就意味着每次都会实例化一个,而不是像java的servlet那样? 再有就是我将业务方面的操作提取到了service类里,当handler需要调用的时候都必须new一个实例,有没办法可以使得在base里new好后可以被继承调用?

1
0
发表了问答
2015/08/12 14:42

Tornado web实时聊天室

Chat Room web 实时聊天室 基于tornado服务器,Redis内存数据库,SQlite 源码:https://github.com/suliangxd/ChatRoom 思路: 当用户进入某个聊天室,即相当于订阅了此聊天室对应在redis里的一个channel 这里给出的架构图是指用户进入聊天室之后的实时聊天架构 思路说明:前端基于ajax的longpolling,后端采用redis的sub/pub机制 1. 服务器端会阻塞请求直到有数据传递或超时才返回,这里设置超时时间为60s 2. 客户端J...

1
8
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
10 评论
433 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部