Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Nginx的WSGI与uWSGi_Python_Django_Nginx_Wsgi_Uwsgi - Fatal编程技术网

Python 使用Nginx的WSGI与uWSGi

Python 使用Nginx的WSGI与uWSGi,python,django,nginx,wsgi,uwsgi,Python,Django,Nginx,Wsgi,Uwsgi,有谁能解释一下在Nginx中使用VS的优缺点吗 目前,我正在为Django网站建立一个生产服务器,我已经准备好了,但无法决定是使用WSGI还是uWSGI。你能详细解释一下每种配置的区别吗?哪种配置的伸缩性最好 提前感谢通常最好在主web服务器之外的单独进程中运行Python。这样,web服务器就可以有很多非常快速地提供静态内容的小线程,而单独的Python进程又大又重,每个进程都运行自己的Python解释器。因此,普通的WSGI是不好的,因为它使用一个大型Python解释器来膨胀每一个nginx

有谁能解释一下在Nginx中使用VS的优缺点吗

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


提前感谢

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


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

好的,伙计们,这种混乱是因为缺乏来自多个来源的详细信息,以及这些协议的命名,以及WSGI的实际内容

总结:

  • WSGI和uwsgi都是协议,而不是服务器。它用于与web服务器通信以实现负载平衡,尤其是利用纯HTTP无法提供的额外功能。到目前为止,Nginx和Cherokee已经实现了该协议
  • uWSGI是一个服务器,它实现的协议之一是WSGI(不要将uWSGI协议与uWSGI服务器混淆)。WSGI是一种Python。WSGI规范有几种实现,其目的不仅仅是用于应用程序服务器/web服务器,但也有相当多的WSGI应用程序服务器(例如CherryPy,如果您还不够困惑的话,它也碰巧有一个生产就绪的符合WSGI的web服务器!)
  • 将uwsgi与WSGI进行比较就是将橙子与苹果进行比较
  • 我相信这是一个很好的答案,可以澄清混乱。这个问题并不愚蠢,发生在任何看到这两个术语的人身上,并且之前没有关于mod_PHP世界之外的事物如何工作的信息(例如,没有任何针对PHP或people的信息)

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


    为方便起见,此处引用了Flask wiki的解释:

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

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


    我对你的回答有点困惑。我看不出他提到在nginx中运行任何类型的WSGI实现。他引用了主要的wsgi.org网站。因此,他最初在WSGI和uWSGI之间的比较有点愚蠢,因为uWSGI是WSGI规范的实现。您自己也曾以一种令人困惑的方式使用过通用WSGI术语,说“它用一个大型Python解释器膨胀了您的每一个nginx线程”。WSGI规范本身无法做到这一点,只有实现才能做到。如果我们比较nginx+mod_WSGI(可插拔模块)和nginx+uWSGI(应用程序服务器容器),这可能是有意义的。因此,当谈到使用nginx运行Python web应用时,由于Manlio Perilo的mod_WSGI是死件,不推荐使用,好的解决方案要么是带有gunicorn或uWSGI的WSGI,要么是带有Flup的FastCGI?键入:“1.uWSGI是协议而不是服务器。”-->“1.WSGI是协议而不是服务器。”实际上,我为1编写的内容是正确的,但确实WSGI是协议,也是uWSGI,所以您编写的两个语句都是正确的:)。当然,没有1的其余上下文。这是uWSGI服务器使用的协议“不要将uwsgi协议与uwsgi服务器(即uwsgi协议)混淆”啊,好的。我还以为你是想在陈述1之间画一条线。“wsgi是一个协议…”和2。“uwsgi是一个实现协议的服务器”。@DerekLitz,当我们执行
    python manage.py runserver
    时,django服务器在其上运行?
    python manage.py runserver
    是django内置的内部服务器。它不是apache、nginx、gunicorn或其他任何东西
    django extensions
    提供了一个使用Werkzeug框架的
    runserver\u plus
    ,但它与任何
    runserver
    都非常接近。是对大量Python WSGI服务器的非常详细的比较,最后有一个总结和一些建议。还使用了一些服务器的配置,这些配置非常不可靠,使它们看起来比实际情况更糟糕。在这种比较中,我们必须仔细阅读。WSGI是一种规范。uWSGI提供了WSGI规范的实现。你无法比较它们。您只能比较不同的实现。