WSGI vs uWSGi与Nginx

fea*_*rix 75 python django wsgi nginx uwsgi

任何人都可以在使用WSGI VS uWSGI与Nginx 时解释利弊.

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

提前致谢

Der*_*itz 93

好吧,伙计们这种困惑是因为缺乏来自几个来源的细节,以及这些协议的命名,以及WSGI实际上是什么.

摘要:

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

  • 实际上,我为1写的是正确的,但它确实是WSGI是一个协议以及uwsgi,所以你写的两个语句都是正确的:).当然,没有上下文的其余部分1.这是uWSGI服务器使用的协议.http://wiki.nginx.org/HttpUwsgiModule, - "不要将uwsgi协议与uWSGI服务器混淆(说uwsgi协议)" (8认同)
  • 错字:"1.**uwsgi**是一种协议而非服务器." - >"1.**WSGI**是一个协议而不是服务器." (3认同)
  • 啊好吧.我原本以为你试图在声明1之间画出一个包含."wsgi是一个协议......"和2."uwsgi是一个实现协议的服务器". (3认同)
  • @DerekLitz,当我们执行python manage.py runserver时,django在哪台服务器上运行? (2认同)
  • 什么是“Python 规范”? (2认同)

Bra*_*des 29

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

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


Abh*_*ari 15

我相信这里http://flask.pocoo.org/docs/deploying/uwsgi/是一个很好的答案,以消除困惑.问题不是很愚蠢,发生在任何看到这两个术语的人身上,并且没有关于mod_PHP世界之外的事情如何工作的事先信息(例如对于php或人们没有任何反对意见)

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