首页 > 教育学习 > 为什么 > 知乎为什么选择 Tornado 作为 Web 开发框架?

知乎为什么选择 Tornado 作为 Web 开发框架?
2012-01-19 17:34:55   来源:   点击:

    知乎为什么选择 Tornado 作为 Web 开发框架?Python的web开发框架这么多,实在眼花缭乱,Tornado相比来说还算个新东西,文档也很少,是哪些特性吸引了知乎工程师呢

    7 个答案

    • 答案 1:

      Tornado异步非阻塞的I/O模型的确让人耳目一新,Tornado的优势主要在于对大量Comet长轮询连接的维护上。这也是FriendFeed开发Tornado的原因-----因为FriendFeed需要实时更新Timeline,而Comet又是目前最好,最流行的方法。由于知乎也有大量长轮询连接需要维护,所以选择Tornado也就在情理之中了。 但是我们也要看到,Tornado不是万金油,由于Tornado的WEB服务器为单线程,一个Request如果阻塞了I/O,那么这个进程将一直挂起,既无法接受新的Request,也无法Finish正在阻塞的其它Request。虽然可以Spawn多个Tornado进程,但是进程这种重量级的东西,Spawn太多会消耗大量的内存资源。这种感觉很像PHP的FastCGI进程那种味道。所以如果是会阻塞I/O的Request一般都是利用Tornado内置的异步HTTP Client交给其它动态后端来做。 所以Tornado在生产中一般前面都要包一层nginx做反向代理,用nginx来做静态文件等大数据量的I/O操作。Tornado的I/O时间实在是太金贵了,在这上面耗不起。 @刘连响 提到的那个测试(kb.cnblogs.com/a/1591500/)在实际应用中并没有什么价值。因为实际应用中必然有逻辑处理,逻辑处理必然要阻塞I/O,这会使Tornado的性能大幅下降。测试可在网页代码self.write("helloworld")前加一句time.sleep(0.01),假设每个Request阻塞I/O 10毫秒,再测试一下性能。 至于你提到的Tornado文档少的问题,我觉得你可以抽空阅读一下Tornado的代码,毕竟是个轻量级框架,代码不多,但是注释却很详细,很容易看懂。请记住,代码永远是最好的文档! 自己的一点理解,如有不当,欢迎指正!
    • 答案 2:

      tornado有性能优势吧 异步非阻塞看了一下quora,正常的请求是pylons,一些实时性的内容用的也是tornado
    • 答案 3:

      自己也做了一个与java netty 的性能测试对吧,每次访问都涉及到操作数据库,对比结果,tornado 性能和服务器的负载都比java netty 好很多,具体: user.qzone.qq.com/40614483...
    • 答案 4:

      tornado 性能非常强悍的 具体的看这里kb.cnblogs.com/a/1591500/
    • 答案 5:

      异步IO
    • 答案 6:

      学习中...
    • 答案 7:

      要多向高中在校学生多学习啊。。。勉励自己继续努力吧

相关热词搜索:

上一篇:新浪微博 “热门话题” 是机器自动完成,还是需要人工附加处理?
下一篇:王卫在顺丰速运发展过程中最重要的 4、5 个决定是什么?