96

Could anyone please explain pros/cons when using WSGI VS uWSGI with Nginx.

Currently i am building up a production server for the Django website which i have prepared but unable to decide whether should i go with WSGI or uWSGI. Could you please explain in detail what differentiates each configuration? Which configuration should scale the best?

Thanks in advance

4

3 回答 3

108

好吧,伙计们,这种混淆是因为缺乏来自多个来源的详细信息,以及这些协议的命名,以及 WSGI 实际上是什么。

概括:

  1. WSGI 和 uwsgi都是协议,而不是服务器。它用于与 Web 服务器通信以实现负载平衡,尤其是利用纯 HTTP 无法提供的额外功能。到目前为止,Nginx 和 Cherokee 已经实现了这个协议。
  2. uWSGI 是一个服务器,它实现的协议之一是 WSGI(不要将 uwsgi 协议与 uWSGI 服务器混淆)。WSGI 是 Python规范。WSGI 规范有几种实现,它的目的不仅仅是用于应用程序服务器/Web 服务器,但也有相当多的 WSGI 应用程序服务器(即 CherryPy,它也恰好有一个生产就绪的 WSGI 兼容 Web 服务器,如果你还不够困惑的话!)。
  3. 将 uwsgi 与 WSGI 进行比较就是将橙子与苹果进行比较。
于 2012-01-01T01:01:52.850 回答
34

通常最好在与主 Web 服务器不同的进程中运行 Python。这样一来,Web 服务器就可以拥有许多非常快速地为静态内容提供服务的小线程,而您的独立 Python 进程将又大又重,并且每个都运行自己的 Python 解释器。这么简单WSGI是不好的,因为它用一个大的 Python 解释器使你的每一个 nginx 线程膨胀。使用fluporgunicornuWSGIbehindnginx会好得多,因为这可以让 nginx 简单地提供内容,并允许您选择运行多少个小型轻量级 nginx 线程,而与您选择多少个重量级 Python 线程来提供动态内容无关。目前人们似乎很满意gunicorn,但这三个选项中的任何一个都应该可以正常工作。

展望未来,它还可以让您在负载开始变得严重时将 Python 移动到另一台服务器。

于 2011-10-12T12:37:08.360 回答
20

我相信这里http://flask.pocoo.org/docs/deploying/uwsgi/是消除混乱的好答案。这个问题并不愚蠢,任何看到这两个术语并且没有关于在 mod_PHP 世界之外如何工作的事先信息的人都会遇到这个问题(例如,没有针对 php 或其他人)

该站点很好地解释了实际需要什么,有什么区别以及一个很好的 nginx 部署示例。


为方便起见,这里引用了 Flask wiki 的解释:

uWSGI 是 nginx、lighttpd 和 cherokee 等服务器上的部署选项;有关其他选项,请参阅 FastCGI 和独立 WSGI 容器。要将您的 WSGI 应用程序与 uWSGI 协议一起使用,您首先需要一个 uWSGI 服务器。uWSGI既是协议又是应用服务器;应用服务器可以服务于 uWSGI、FastCGI 和 HTTP 协议。

最流行的 uWSGI 服务器是 uwsgi,我们将在本指南中使用它。确保安装它以跟随。

于 2012-03-19T17:38:37.680 回答