在Nginx上使用WSGI VS uWSGI时,谁能解释优点/缺点。
目前,我正在为Django网站构建生产服务器,该服务器已经准备好了,但无法决定应该使用WSGI还是uWSGI。您能否详细说明每种配置的不同之处?哪种配置最合适?
提前致谢
Answers:
好的,伙计们的困惑是由于缺乏多个来源的详细信息,这些协议的命名以及WSGI实际上是什么。
概要:
python manage.py runserver
?
python manage.py runserver
是内置于Django的内部服务器。它不是apache,nginx,gunicorn或其他任何东西。django-extensions
提供了一个runserver_plus
使用Werkzeug框架的,但是与任何服务器都非常接近runserver
。
通常最好在与主Web服务器不同的进程中运行Python。这样,Web服务器可以具有许多微小的线程,这些线程可以非常快速地提供静态内容,而您单独的Python进程又大又重,并且每个进程都在运行自己的Python解释器。这么简单WSGI
是不好的,因为它使用大型Python解释器使您的nginx线程每个膨胀。使用flup
orgunicorn
或uWSGI
落后nginx
更好,因为这可以释放nginx来简单地提供内容,并让您选择要运行的细小nginx线程,而与您选择为动态内容提供多少个重量级Python线程无关。人们似乎很满意gunicorn
,但是这三个选项中的任何一个都可以正常工作。
展望未来,当负载开始变得严重时,它还使您有空将Python移至另一台服务器。
我相信这里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,我们将在本指南中使用它。请确保已安装它以进行后续操作。