好的,Tornado 是无阻塞的并且速度相当快,它可以轻松处理大量长期请求。

但我想这不是灵丹妙药,如果我们只是盲目地使用 Tornado 运行基于 Django 的网站或任何其他网站,它不会带来任何性能提升。

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

  • 什么时候应该使用龙卷风?
  • 什么时候没用了?
  • 使用时应注意什么?
  • 我们怎样才能使 效率低下 使用龙卷风的网站?
  • 有一个服务器和一个网络框架。我们什么时候应该使用框架,什么时候可以用其他框架替代它?
有帮助吗?

解决方案

有一个服务器和一个网络框架。我们什么时候应该使用框架,什么时候可以用其他框架替代它?

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

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

什么时候应该使用龙卷风?什么时候没用了?使用时应注意什么?

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

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

  1. 做任何计算密集型任务
  2. 引入阻塞操作

但我想这不是灵丹妙药,如果我们只是盲目地使用 Tornado 运行基于 Django 的网站或任何其他网站,它不会带来任何性能提升。

性能通常是完整 Web 应用程序架构的一个特征。如果应用程序设计不当,大多数 Web 框架的性能都会降低。考虑缓存、负载平衡等。

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

其他提示

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

我想在 Tornado 应用程序中解析 RSS 提要。您认为这相当计算密集吗?

好吧,这取决于您正在执行哪种解析以及在什么硬件上:) 时间很长,所以如果您的应用程序需要超过半秒的时间来响应,它会显得缓慢 - 分析您的应用程序。

快速系统的关键是出色的架构,而不是具体细节,例如您正在使用哪个框架(Twisted、Tornado、Apache+PHP)。Tornado 具有异步处理风格,在我看来这就是它的本质所在。Node.js、Twisted 和 Yaws 是其他异步 Web 服务器的示例,它们由于轻量级方法和异步处理风格而具有良好的扩展性。

所以:

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

什么时候没用了?

Tornado 适合处理大量连接,因为它可以响应传入的客户端、分派请求处理程序,并且在将结果回调推送到事件队列之前不考虑该客户端。因此,对于特定的质量,当您希望在处理大量请求时能够很好地扩展时,应该使用 Tornado。异步处理有利于功能解耦和无共享数据访问。这与无状态设计配合得很好,比如 休息 或其他 面向服务的架构s。您也不必处理产生太多固有开销的线程或进程,并且可以节省一些锁定/IPC 麻烦。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top