使用nginx + apache或nginx +龙卷风为django站点服务更好吗?

我有一个Django站点,这是ajax密集型的,目前在Apache mod_wsgi上运行,nginx作为反向代理。

现在是更好的保留我目前的设置,还是更好地运行我的django网站龙卷风与nginx作为反向代理和负载平衡器?

我问的原因是,我已经读了一些像mod_wsgi不是为asynchronous的东西。 我不确定这个部分,但它让我想,也许龙卷风与Nginx将是我的设置好,因为它的非阻塞。

我需要你的build议。 谢谢。

Django位于WSGI接口之上,并且该接口是按定义阻塞的。 因此,您在Web应用程序中不使用任何asynchronous机制,从而大大降低了使用asynchronousWeb服务器所带来的好处。 任何好处都将更多的是与备用服务器轻量级,而不是承载这么多的开销,而与事实,即使用asynchronous没有任何关系。 为了充分利用asynchronous服务器,您需要closuresDjango并写入所使用的特定asynchronous服务器的asynchronousAPI。

还应该强调的是,与Apache / mod_wsgi之上的Django相比,关于Tornado发布的初始基准是有缺陷的。 他们声称龙卷风速度快了4倍。 对于编写到Tornado API的简单asynchronousWeb应用程序,与Django hello world应用程序相比,情况可能如此,但如果将其与基本的WSGI hello world程序进行比较,则性能没有太大差别。 因此,使用WSGI适配器运行在Tornado之上的Django的性能与Apache / mod_wsgi之上的Django并没有太大的不同,当我在MacOS X上testing它们的时候,Tornado实际上是慢了一点。

如果你仍然觉得使用更轻量级的服务器会带来一些好处,或者可能更容易pipe理,我会build议使用gunicorn而不是Tornado。

我们使用nginx作为负载均衡器, uWSGI作为快速的WSGI服务器。 到目前为止没有问题

服务Django(或其他WSGI应用程序)的一个很好的解决scheme实际上是Nginx + Gunicorn 。 到目前为止,这个设置工作得很好,而且Gunicorn软件是最近的一个,Python和Django社区的接待非常好。 你应该试试。

我目前使用supervisord来处理我的gunicorn进程,但其他解决scheme是可能的。