0

以下讨论已经成功地说明了非阻塞 Web 服务器不会对传统 Web 应用程序有任何好处/更好。

在 Tornado Web 服务器上运行 Django 以获得 async + django admin + django orm 可能性的最佳方法是什么?

Django is not asynchronous, so running Django in Tornado will remove most of the performance benefits you might get from Tornado.

Play 框架中存在非阻塞模型,但它对 Web 服务器没有任何特殊要求(它给我的印象是任何 tomcat 或码头都可以工作,它本身不支持Tornado 的非阻塞模型)。我的问题是:像 Tomcat 这样的传统 Web 服务器如何使 Play 这样的非阻塞 Web 框架受益?

4

1 回答 1

3

HTTP 请求的异步服务(当一个线程可以服务多个 HTTP 请求时)从 Servlet API 3 开始可用。Tomcat 7 和 Jetty 8 支持 Servlet API 3。

在旧的 servlet 2 容器上运行 Play/Akka 应用程序没有太多好处,因为请求不会在其整个生命周期内释放为其分配的线程。然而,即使在这种情况下,异步特性和 Akka Actor 也可以很方便地用于一些后台处理任务。

Django 真的是非异步的。Tornado 内部是异步的,即它允许在单个线程中处理多个 TCP 连接,但是当tornado.wsgi用于与 Django 互操作时,它会为请求分配一个线程,在其中调用 WSGI 可调用的,并将该线程分配给这个单个请求以用于它的一生。WSGI 类似于 Servlet API 2。

于 2013-02-12T09:21:57.437 回答