让 tornado 的异步任务更加轻松

2015-04-16 01:46:28 +08:00
 ipconfiger
https://github.com/ipconfiger/torasync
4577 次点击
所在节点    分享创造
23 条回复
9hills
2015-04-16 09:25:22 +08:00
我的选择是把所有任务都扔rq
sujin190
2015-04-16 09:31:50 +08:00
这样效率太低了吧,tornado在web方面的优势都被弄的没了
ipconfiger
2015-04-16 09:46:42 +08:00
@sujin190 一句慢查询就把整个进程都堵塞了,异步扔到队列到远程主机跑当然省事,但是获取返回值呢?有些服务还是需要获取返回值的。这个方案也说不上最完美,但是好歹本地的后端进程耗尽的话也就堵塞那几个耗时的要放后端进程处理的请求,其余的请求是畅通的。这里不是要取代tornado现有的方式,而是提供一个额外的处理耗时请求的方法而已,比如上传了图片要缩略啊,切图啊。或者转发到七牛又拍什么的。
futursolo
2015-04-16 10:14:30 +08:00
你这个和tornado自带的tornado.concurrent.run_on_executor以及return_future的方法有什么区别?
ipconfiger
2015-04-16 10:26:26 +08:00
@futursolo


线程...... GIL啊 concurrent.futures ,这个只能在3下用
wph95
2015-04-16 10:36:35 +08:00
@ipconfiger 我现在是用celery+rq实现了异步任务,多机扩展很方便,返回值通过rq来传递也不算麻烦。
不知道torasync相较Celery有没有杀手锏级别的特点
ipconfiger
2015-04-16 10:39:15 +08:00
@wph95 安装方便,使用方便,0配置
futursolo
2015-04-16 10:47:31 +08:00
@ipconfiger
1. 没事,偶都是3.2.5 +的
2. Python2 执行·pip install features·就可以安装features。。。(你没看括号里的内容吗。。。)
3. Callback is deprecated, simply call and yield its Future. -- From Motor
futursolo
2015-04-16 10:54:46 +08:00
@futursolo 突然发现自己手滑打错了,应该是futures。。。
scys
2015-04-16 11:01:24 +08:00
3.4效率很低…就是编写方便多了
Shared
2015-04-16 11:57:12 +08:00
@scys 效率低是指哪方面,有引用来源吗?
sujin190
2015-04-16 13:59:56 +08:00
@ipconfiger 查询数据库的话一般都有异步版了吧,传七牛的话异步的http client不是更好用么?如果是要处理大量的缩略图的话,不是应该tornado进程先完成保存文件,接着通知后端服务完成处理么?这样做反而可控性不好和效率也起不来
ipconfiger
2015-04-16 14:27:44 +08:00
@sujin190 你可以想得更复杂一点,先各种数据库判断处理,再传七牛,传完以后再各种处理等等
no13bus
2015-04-16 14:44:57 +08:00
@wph95 celery是队列 rq也是队列,为什么要2个一起用呢?rq的功能 celery都有,并且能并行处理task
ipconfiger
2015-04-16 14:54:27 +08:00
tornado大版本都已经4了,期间无论是官方的还是各路大仙自己倒腾的,对于这个痛点也有很多不同的方案,我只是针对自己实际使用的时候遇到的一些问题给出了一个方案,所以不一定适合所有人,其实也没有万能解,方案的得失大家可以一起讨论,放出来只是希望有需求的同学能方便一下,仅此而已
wph95
2015-04-16 15:24:12 +08:00
@no13bus celery 是Distributed Task Queue 需要Brokers 我不过是用rq做Brokers
celery本身只是一个分配系统 自身不是队列
no13bus
2015-04-16 15:26:04 +08:00
@wph95 嗯。知道了。原来。我是用redis做broker的。
kernel1983
2015-04-16 16:14:16 +08:00
我们的做法是消灭慢查询
sujin190
2015-04-16 16:18:11 +08:00
@ipconfiger 就算是是如此还是明显tornado自身更省资源更快吧,用greenlet来切换同步io操作都要比多进程好的多
sujin190
2015-04-16 16:18:51 +08:00
@kernel1983 说的是消灭慢查询才是王道

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/184020

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX