何时以及如何使用龙卷风?什么时候没用?

Vla*_*nko 81 python asynchronous tornado nonblocking

好吧,Tornado是非阻塞的,非常快,它可以轻松处理很多常备请求.

但我想这不是一个银弹,如果我们盲目地运行基于Django或任何其他Tornado网站,它将不会给任何性能提升.

我找不到对此的全面解释,所以我在这里问:

  • 什么时候应该使用龙卷风?
  • 什么时候没用?
  • 使用时,应该考虑什么?
  • 我们如何使用Tornado 制作效率低下的网站?
  • 有一个服务器和一个webframework.我们什么时候应该使用框架?何时可​​以用其他框架替换它?

pyf*_*unc 45

有一个服务器和一个webframework.我们什么时候应该使用框架?何时可​​以用其他框架替换它?

这种区别有点模糊.只有当您提供静态页面时,才会使用像lighthttpd这样的快速服务器.另外,大多数服务器提供了不同的框架复杂性来开发Web应用程序.Tornado是一个很好的Web框架.Twisted功能更强大,被认为是一个很好的网络框架.它支持许多协议.

Tornado和Twisted是支持非阻塞,异步Web /网络应用程序开发的框架.

什么时候应该使用龙卷风?什么时候没用?使用时,应该考虑什么?

就其本质而言,异步/非阻塞I/O在I/O密集且无计算密集时效果很好.大多数Web /网络应用程序都适合此模型.如果您的应用程序需要完成某些计算密集型任务,则必须将其委派给可以更好地处理它的其他服务.Tornado/Twisted可以完成Web服务器的工作,响应Web请求.

我们如何使用Tornado制作效率低下的网站?

  1. 做任何计算密集型任务
  2. 介绍阻止操作

但我想这不是一个银弹,如果我们盲目地运行基于Django或任何其他Tornado网站,它将不会给任何性能提升.

性能通常是完整Web应用程序体系结构的特征.如果应用程序设计不正确,您可以降低大多数Web框架的性能.考虑缓存,负载平衡等.

Tornado和Twisted提供了合理的性能,非常适合构建性能非常高的Web应用程序.您可以查看扭曲和龙卷风的推荐,看看它们的功能.


Mor*_*sen 6

我很抱歉回答了一个老问题,但我遇到了这个问题,并想知道为什么它没有更多的答案.回答Bart J的问题:

我想在Tornado应用程序中解析RSS提要.你会认为计算密集吗?

嗯,这取决于你正在做什么样的解析和什么硬件:)长时间是很长一段时间,所以如果你的应用程序需要超过半秒响应,它似乎迟钝 - 配置你的应用程序.

快速系统的关键是很棒的架构,而不是具体的例子,例如你正在使用哪个框架(Twisted,Tornado,Apache + PHP).Tornado有一种异步处理风格,在我看来,这真的是很多东西.Node.js,Twisted和Yaws是其他异步Web服务器的例子,由于轻量级方法和异步处理方式,它们可以很好地扩展.

所以:

什么时候应该使用龙卷风?

什么时候没用?

Tornado适用于处理大量连接,因为它可以响应传入的客户端,调度请求处理程序,并且在结果回调被推送到事件队列之前不要考虑该客户端.因此,当您想要在处理大量请求时很好地扩展时,应该使用Tornado.异步处理有助于功能解耦和无共享数据访问.对于像REST或其他面向服务的体系结构这样的无状态设计,这种情况非常好.您也不必处理具有固有开销的产生线程或进程,并且可以节省一些锁定/ IPC问题.

另一方面,如果您的后端和/或数据存储需要很长时间来处理请求,则龙卷风不会产生太大影响.它特别有助于并发设计和Web服务.并发架构使您可以更轻松地扩展设计并保持较低的耦合.这至少是我对龙卷风的体验.