何时以及如何使用Tornado? 什么时候没用?

好吧,龙卷风是非阻塞的,速度相当快,它可以很容易地处理很多站立要求。

但我猜这不是一个银弹,如果我们只是盲目地运行基于Django或其他网站与龙卷风,它不会给任何性能提升。

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

  • 什么时候应该使用龙卷风?
  • 什么时候没用?
  • 使用时应该考虑什么?
  • 我们怎样才能使低迷的网站使用龙卷风?
  • 有一个服务器和一个networking框架。 我们什么时候应该使用框架,什么时候可以用另一个replace?

有一个服务器和一个networking框架。 我们什么时候应该使用框架,什么时候可以用另一个replace?

这个区别有点模糊。 只有当你提供静态页面,你才能使用像lighthttpd这样的快速服务器。 另外,大多数服务器为开发Web应用程序提供了不同的框架复杂性。 龙卷风是一个很好的networking框架。 扭曲更有能力,被认为是一个良好的networking框架。 它支持很多协议。

Tornado和Twisted是提供支持非阻塞asynchronousWeb /networking应用程序开发的框架。

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

由于非常自然,asynchronous/非阻塞I / O在I / O密集型而不是计算密集型的情况下工作得非常好。 大多数networking/networking应用都适合这种模式。 如果您的应用程序需要执行特定的计算密集型任务,那么必须将其委派给其他可以更好地处理它的服务。 虽然龙卷风/扭曲可以做web服务器的工作,响应web请求。

我们怎样才能使低迷的网站使用龙卷风?

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

但我猜这不是一个银弹,如果我们只是盲目地运行基于Django或其他网站与龙卷风,它不会给任何性能提升。

性能通常是完整的Web应用程序体系结构的特征。 如果应用程序devise不当,可以降低大多数Web框架的性能。 考虑caching,负载平衡等

龙卷风和扭曲提供了合理的性能,是build立一个非常高性能的Web应用程序的好处。 你可以看看扭曲和龙卷风的见证,看看他们的能力。

我很抱歉回答了一个老问题,但我偶然发现了这个问题,并想知道为什么没有更多的答案。 回答Bart J的问题:

I would like to parse RSS feeds in the Tornado application. Would you consider that fairly computationally intensive? 

那么这取决于你在做什么types的parsing以及硬件是什么:)很长一段时间,所以如果你的应用需要花费不止半秒的时间来做出回应,那么看起来似乎很缓慢 – 分析你的应用。

快速系统的关键是伟大的体系结构,而不是像你正在使用的框架(Twisted,Tornado,Apache + PHP)那样的细节。 龙卷风有一个asynchronous的处理风格,这真的是我认为的很多事情。 Node.js,Twisted和Yaws是其他asynchronousWeb服务器的例子,由于轻量级的方法和asynchronous处理风格,可以很好地扩展。

所以:

 When should Tornado be used? When is it useless? 

龙卷风对于处理大量的连接是有好处的,因为它可以响应传入的客户端,调度请求处理程序,并且不会考虑该客户端,直到结果callback被推入事件队列。 因此,在处理大量请求时,如果要很好地扩展,应该使用Tornado。 asynchronous处理有助于function解耦和无共享数据访问。 像REST或其他面向服务的体系结构这样的无状态devise可以很好地摆动。 你也不必处理繁殖的线程或进程的固有开销这么多,你可以节省一些locking/ IPC的麻烦。

另一方面,如果您的后端和/或数据存储需要很长时间来处理请求,那么龙卷风不会有太大区别。 它特别有助于并发devise和Web服务。 并发架构使您可以更轻松地扩展您的devise并保持低耦合度。 至less这是我与龙卷风的经历。