WSGI vs uWSGi与Nginx

任何人都可以请解释使用WSGI VS uWSGI与Nginx的利弊。

目前我正在为Django网站构build一个生产服务器,但是我无法决定是否应该使用WSGI或uWSGI。 你能否详细解释一下每种configuration的区别? 哪个configuration应该最好?

提前致谢

好吧,大家这个混淆是因为缺乏来自几个来源的细节,这些协议的命名,以及WSGI实际上是什么。

概要:

  1. WSGI和uwsgi 都是协议,而不是服务器。 它用于与Web服务器进行通信以实现负载平衡,特别是利用纯HTTP无法提供的额外function。 到目前为止,Nginx和Cherokee已经实现了这个协议。
  2. uWSGI是一个服务器,它实现的协议之一是WSGI(不要将uwsgi协议与uWSGI服务器混淆)。 WSGI是一个Python 规范 。 有几个WSGI规范的实现,它不仅仅用于应用程序服务器/ Web服务器,还有很多WSGI应用程序服务器(即CherryPy,它也恰好有一个WSGI兼容的Web服务器,如果你已经不够困惑了!)。
  3. 比较uwsgi和WSGI是比较桔子和苹果。

通常最好在与主Web服务器分开的过程中运行Python。 那样的话,Web服务器可以有很多细小的线程,这些线程非常快速地为静态内容提供服务,而单独的Python进程将会很大很重,并且每个都会运行他们自己的Python解释器。 所以普通的WSGI是不好的,因为它用一个大的Python解释器膨胀了你的每一个nginx线程。 在nginx后面使用flup或者gunicornuWSGI要好得多,因为这样可以释放nginx来简单地提供内容,并且让你select运行多less个微小的nginx线程,而uWSGI你select了多less个重量级的Python线程dynamic内容。 现在人们似乎对gunicorn感到非常满意,但是这三个选项中的任何一个都可以正常工作。

接下来,它还释放你在加载开始变得严重时将Python移动到另一个服务器。

我相信在这里http://flask.pocoo.org/docs/deploying/uwsgi/是一个很好的解决混乱的答案。; 这个问题不是愚蠢的,碰巧任何人看到这两个术语,并没有先前的信息,如何在mod_PHP世界以外的事情工作(例如没有反对PHP或人)

该网站很好地解释了实际的需求和差异,以及nginx的一个很好的部署示例。

这篇博文是对很多Python WSGI服务器进行非常详细的比较,最后总结和一些build议。