使用Nginx的WSGI与uWSGi

2024-04-25 07:41:53 发布

您现在位置:Python中文网/ 问答频道 /正文

有谁能解释一下在Nginx中使用WSGIuWSGI的利弊。

目前,我正在为Django网站建立一个生产服务器,我已经准备好了,但无法决定我应该使用WSGI还是uWSGI。你能详细解释一下每种配置的区别吗?哪种配置的伸缩性最好?

提前谢谢


Tags: django服务器wsgi网站nginxuwsgi区别利弊
3条回答

我相信这里的这个http://flask.pocoo.org/docs/deploying/uwsgi/是一个很好的解决困惑的答案。这个问题并不愚蠢,任何人看到这两个术语时都会遇到,并且事先没有关于mod_PHP world之外的工作方式的信息(例如,对PHP或其他人没有任何不利之处)

该站点很好地用实际的术语解释了什么是需要的,什么是区别,并且是nginx的一个很好的部署示例。

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

总结:

  1. WSGI和uwsgi都是协议,而不是服务器。它用于与web服务器通信以实现负载平衡,特别是利用纯HTTP无法提供的额外功能。到目前为止,Nginx和Cherokee已经实现了这个协议。
  2. uWSGI是一个服务器,它实现的协议之一是WSGI(不要混淆uWSGI协议和uWSGI服务器)。WSGI是一个Pythonspecification。WSGI规范有很多实现,它不仅仅用于应用服务器/web服务器,还有很多WSGI应用服务器(例如CherryPy,如果您还没有足够的困惑,它碰巧也有一个符合WSGI的生产级web服务器)。
  3. 将uwsgi与WSGI相比较就是将桔子与苹果相比较。

通常最好在主web服务器的单独进程中运行Python。这样,web服务器可以有很多小线程,这些线程可以非常快速地提供静态内容,而您的单独Python进程将是大而重的,并且每个进程都运行自己的Python解释器。所以简单的WSGI是不好的,因为它会用一个大的Python解释器使每个nginx线程膨胀。在nginx后面使用flupgunicornuWSGI要好得多,因为这样可以释放nginx来简单地服务内容,并允许您选择要运行多少个小型的nginx线程,而不依赖于您选择要运行多少个重量级Python线程来服务动态内容。目前人们似乎对gunicorn很满意,但这三种选择中的任何一种都应该可以正常工作。

接下来,当负载开始变得严重时,还可以让您自由地将Python移动到另一个服务器。

相关问题 更多 >