WSGI vs uWSGi与Nginx

时间:2011-10-12 12:06:31

标签: python django nginx wsgi uwsgi

在Nginx使用WSGI VS uWSGI时,有没有人可以解释一下优缺点。

目前我正在为Django网站构建一个生产服务器,我已经准备好但无法决定是否应该使用WSGI或uWSGI。您能详细解释一下每种配置的区别吗?哪种配置应该扩展得最好?

提前致谢

4 个答案:

答案 0 :(得分:85)

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

要点:

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

答案 1 :(得分:26)

通常最好在与主Web服务器不同的进程中运行Python。这样,Web服务器可以有很多很小的线程,可以非常快速地提供静态内容,而单独的Python进程将是大而重的并且每个都运行自己的Python解释器。所以简单的WSGI是不好的,因为它使用一个大的Python解释器膨胀你的每一个nginx线程。在flup后面使用gunicornuWSGInginx要好得多,因为这样可以释放nginx来简单地提供内容,并让您选择运行多少微小的nginx线程,无论您选择多少重量级Python线程来提供动态内容。人们现在似乎对gunicorn非常满意,但这三个选项中的任何一个都应该可以正常工作。

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

答案 2 :(得分:15)

我相信这里http://flask.pocoo.org/docs/deploying/uwsgi/是清除困惑的好方法。问题不是很愚蠢,发生在任何看到这两个术语并且没有事先知道如何在mod_PHP世界之外工作的信息(例如对于php或人们没有任何意义)

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

答案 3 :(得分:2)

This blog post是对很多Python WSGI服务器的非常详细的比较,最后是摘要和一些建议。