玩2.0非阻塞模型与python龙卷风非阻塞模型

时间:2013-02-11 18:35:06

标签: django web-applications playframework-2.0 jetty tornado

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

What is the best way to run Django on Tornado Web Server to have async + django admin + django orm possibilities?

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

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

1 个答案:

答案 0 :(得分:3)

HTTP请求的异步服务(当一个线程可以提供多个HTTP请求时)is available从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。