知乎为什么选择 Tornado 作为 Web 开发框架

如题所述

您好,很高兴能帮助您
这也是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时间实在是太金贵了,在这上面耗不起。
至于你提到的Tornado文档少的问题,我觉得你可以抽空阅读一下Tornado的代码,
毕竟是个轻量级框架,代码不多,但是注释却很详细,很容易看懂。
请记住,代码永远是最好的文档!

你的采纳是我前进的动力,
记得好评和采纳,答题不易,互相帮助,
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-07-06
iendFeed开发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
第2个回答  2018-07-30
Tornado不仅仅是Web框架,它实现了异步非阻塞的I/O模型。这个特性的优势体现在对大量Comet长轮询连接的维护上。这也是FriendFeed开发Tornado的原因-----因为FriendFeed需要实时更新Timeline,而Comet又是目前最好,最流行的方法。由于知乎在开发
第3个回答  2018-07-06
Tornado异步非阻塞的I/O模型的确让人耳目一新,Tornado的优势主要在于对大量Comet长轮询连接的维护上。这也是FriendFeed开发Tornado的原因-----因为FriendFeed需要实时更新Timeline,而Comet又是目前最好,最流行的方法。由于知乎也有大量长轮询连接需要维护,所以选择Tornado也就在情理之中了。
相似回答