Django 玩2.0非阻塞模型vs python tornado非阻塞模型
下面的讨论已经成功地说明了非阻塞web服务器对传统web应用程序没有任何好处Django 玩2.0非阻塞模型vs python tornado非阻塞模型,django,web-applications,playframework-2.0,jetty,tornado,Django,Web Applications,Playframework 2.0,Jetty,Tornado,下面的讨论已经成功地说明了非阻塞web服务器对传统web应用程序没有任何好处 Play框架中存在,但它没有对web服务器提出任何特殊要求(它给我的印象是,任何tomcat或jetty都可以工作,这本身不支持非阻塞模型)。我的问题是:像Tomcat这样的传统web服务器如何使Play这样的非阻塞web框架受益?从Servlet API 3开始异步服务HTTP请求(当一个线程可以服务多个HTTP请求时)。Tomcat 7和Jetty 8支持Servlet API 3 在旧的Servlet2容器上运
Play框架中存在,但它没有对web服务器提出任何特殊要求(它给我的印象是,任何tomcat或jetty都可以工作,这本身不支持非阻塞模型)。我的问题是:像Tomcat这样的传统web服务器如何使Play这样的非阻塞web框架受益?从Servlet API 3开始异步服务HTTP请求(当一个线程可以服务多个HTTP请求时)。Tomcat 7和Jetty 8支持Servlet API 3 在旧的Servlet2容器上运行Play/Akka应用程序并没有什么好处,因为请求不会在其整个生命周期中释放分配给它的线程。然而,即使在这种情况下,对于一些后台处理任务,异步特性和Akka参与者也很方便
Django实际上是非异步的。Tornado在内部是异步的,即它允许在单个线程中处理多个TCP连接,但是当使用
Tornado.wsgi
与Django进行互操作时,它为请求分配一个线程,在其中调用wsgi callable,并且该线程在整个生命周期内分配给该单个请求。WSGI类似于Servlet API 2。从Servlet API 3开始异步服务HTTP请求(当一个线程可以服务多个HTTP请求时)。Tomcat 7和Jetty 8支持Servlet API 3
在旧的Servlet2容器上运行Play/Akka应用程序并没有什么好处,因为请求不会在其整个生命周期中释放分配给它的线程。然而,即使在这种情况下,对于一些后台处理任务,异步特性和Akka参与者也很方便
Django实际上是非异步的。Tornado在内部是异步的,即它允许在单个线程中处理多个TCP连接,但是当使用Tornado.wsgi
与Django进行互操作时,它为请求分配一个线程,在其中调用wsgi callable,并且该线程在整个生命周期内分配给该单个请求。WSGI类似于ServletAPI 2
Django is not asynchronous, so running Django in Tornado will remove most of the performance benefits you might get from Tornado.