WSGIとnginxを使用したuWSGi [クローズ]


88

使用する際に誰もが長所/短所を説明してもらえWSGI VS uWSGIをnginxのと。

現在、準備したDjango Webサイトの運用サーバーを構築していますが、WSGIとuWSGIのどちらを使用するかを決定できません。各構成の違いについて詳しく説明してください。どの構成が最適にスケーリングする必要がありますか?

前もって感謝します


このブログ投稿は、多くのPython WSGIサーバーの非常に詳細な比較であり、最後に要約といくつかの推奨事項があります。
Lowe Thiderman 2011年

また、一部のサーバーの構成を使用しているため、実際には危険であり、サーバーの外観が実際よりも悪くなっています。その比較に何を読み込むかについて注意する必要があります。
グラハム・ダンプルトン2011年

25
WSGIは仕様です。uWSGIは、WSGI仕様の実装を提供します。それらを比較することはできません。異なる実装のみを比較できます。
グラハム・ダンプルトン2011年

回答:


100

わかりました。この混乱は、いくつかのソースからの詳細の欠如、これらのプロトコルの名前、およびWSGIが実際に何であるかによるものです。

概要:

  1. WSGIとuwsgiはどちらもプロトコルであり、サーバーではありません。これは、負荷分散のためにWebサーバーと通信するために使用され、特に純粋なHTTPでは提供できない追加機能を利用するために使用されます。これまでのところ、NginxとCherokeeはこのプロトコルを実装しています。
  2. uWSGIはサーバーであり、実装するプロトコルの1つはWSGIです(uwsgiプロトコルをuWSGIサーバーと混同しないでください)。WSGIはPython仕様です。WSGI仕様にはいくつかの実装があり、アプリケーションサーバー/ Webサーバー以外にも使用することを目的としていますが、かなりの数のWSGIアプリケーションサーバーがあります(つまり、CherryPyは、本番環境に対応したWSGI準拠のWebサーバーも備えています。 、まだ十分に混乱していない場合は!)。
  3. uwsgiとWSGIを比較すると、オレンジとリンゴが比較されます。

3
タイプミス:「1.uwsgiはサーバーではなくプロトコルです。」->「1.WSGIはサーバーではなくプロトコルです。」
アマン

9
実際、私が1について書いたことは正しいですが、WSGIはプロトコルであると同時にuwsgiでもあるので、あなたが書いた両方のステートメントは正しいです:)。もちろん、残りの1のコンテキストはありません。これはuWSGIサーバーで使用されるプロトコルです。wiki.nginx.org/HttpUwsgiModule、-「uwsgiプロトコルをuWSGIサーバー(uwsgiプロトコルを話す)と混同しないでください」
Derek Litz

4
あ、そう。「wsgiはプロトコルです。」と2.「uwsgiはプロトコルを実装するサーバーです」というステートメントの間にコントラストを付けようとしていると思いました。
アマン

2
@DerekLitz、実行するとdjangoが実行されるサーバーはpython manage.py runserverどれですか?
Piyush S. Wanare 2017

python manage.py runserverDjangoに組み込まれている内部サーバーです。Apache、nginx、gunicornなどではありません。Werkzeugフレームワークを使用django-extensionsするを提供しますが、runserver_plusこれはサーバーに限りなく近いものrunserverです。
Mike DeSimone 2017

32

通常、PythonはメインのWebサーバーとは別のプロセスで実行するのが最適です。そうすれば、Webサーバーは静的コンテンツを非常に高速に提供する小さなスレッドをたくさん持つことができますが、個別のPythonプロセスは大きくて重いものになり、それぞれが独自のPythonインタープリターを実行します。WSGI大きなPythonインタープリターでnginxスレッドのすべてを膨らませるので、プレーンは悪いです。使用するflupgunicornまたはuWSGI背後nginx単にコンテンツを提供し、あなたが独立して使用すると、動的なコンテンツを提供するために持ち出すどのように多くのヘビー級Pythonのスレッドのお好みの、小さな光nginxのスレッドを実行する方法を多く選択することができますnginxの最大その解放しますので、はるかに優れています。gunicorn現時点では人々は非常に満足しているようですが、これら3つのオプションのいずれも問題なく機能するはずです。

将来的には、負荷が深刻になり始めたときにPythonを別のサーバーに移動することもできます。


1
あなたの答えに少し混乱しています。彼がnginx内で任意の種類のWSGI実装を実行することに言及したことはわかりません。彼はメインのwsgi.orgサイトを参照しました。したがって、uWSGIはWSGI仕様の実装であるため、WSGIとuWSGIの最初の比較は、そもそも少しばかげています。あなた自身は、「大きなPythonインタープリターでnginxスレッドのすべてを膨らませる」と混乱するように一般的なWSGI用語を使用しました。WSGI仕様自体はそれを行うことができず、実装のみが行うことができます。
グラハム・ダンプルトン2011年

1
nginx + mod_wsgi(プラガブルモジュール)とnginx + uWSGI(アプリケーションサーバーコンテナー)を比較する場合は意味があります。
clime 2013

Nginxを使用してPythonWebアプリを実行する場合、Manlio Perilloのmod_wsgiはデッドウェアであり、推奨されないため、適切なソリューションは、gunicornまたはuWSGIを使用するWSGI、またはFlupを使用するFastCGIのいずれかです。
Gulbahar 2013年

19

ここhttp://flask.pocoo.org/docs/deploying/uwsgi/は、混乱を解消するための良い答えだと思います。質問はばかげているわけではなく、2つの用語を見て、mod_PHPの世界の外で物事がどのように機能するかについての事前情報を持っていない人に起こります(たとえば、phpや人々に対して何もありません)

このサイトは、何が必要で何が違いであるか、そしてnginxの優れた展開例を実用的な用語で説明するのに適しています。


便宜上、Flaskwikiからの説明をここに引用します。

uWSGIは、nginx、lighttpd、チェロキーなどのサーバーでの展開オプションです。その他のオプションについては、FastCGIおよびスタンドアロンWSGIコンテナを参照してください。WSGIアプリケーションをuWSGIプロトコルで使用するには、最初にuWSGIサーバーが必要です。uWSGIは、プロトコルとアプリケーションサーバーの両方です。アプリケーションサーバーは、uWSGI、FastCGI、およびHTTPプロトコルを提供できます。

最も人気のあるuWSGIサーバーはuwsgiであり、このガイドで使用します。従うためにそれがインストールされていることを確認してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.