2011-10-12 16 views
55

WSGI VS uWSGIをNginxと使用している人は誰でも説明してください。NginxとWSGIとuWSGi

現在、私は準備しているDjango Webサイト用のプロダクションサーバーを構築していますが、WSGIまたはuWSGIを使用するかどうかは判断できません。各構成をどのように区別するのか詳細に説明してください。どんな構成で最高のスケールにする必要がありますか?事前に

おかげ

+18

WSGIは仕様です。 uWSGIは、WSGI仕様の実装を提供します。あなたはそれらを比較することはできません。異なる実装のみを比較できます。 –

+0

http:// segmentfault。com/a/1190000004294634 – zx1986

答えて

2

This blog postは最後にまとめといくつかの勧告にPythonのWSGIサーバの多くの非常に詳細な比較、です。

+2

また、実際には厄介で、できるだけ悪く見えるようにするサーバーの構成も使用します。 1つは、その比較に何を読み込むかに注意する必要があります。 –

23

一般に、メインWebサーバーとは別のプロセスでPythonを実行するのが最善です。そうすれば、Webサーバーは静的なコンテンツを提供する小さなスレッドをたくさん持つことができます。別々のPythonプロセスは大きくて重量があり、それぞれ独自のPythonインタープリタを実行します。だから、普通のWSGIは悪いです。なぜなら、大きなPythonインタプリタを使ってnginxスレッドのすべてを1つに膨らませるからです。 flupまたはgunicornまたはuWSGIの後ろにあるnginxの方がはるかに優れています。これは、nginxをコンテンツに簡単に配信できるようにし、配信するヘビーなPythonスレッドの数とは無関係に、実行する小さなnginxスレッドの数を選択できるようにするためです。動的コンテンツ。人々は現時点ではgunicornと非常に満足しているようですが、これらの3つのオプションのどれも正常に動作するはずです。

また、ロードが深刻化し始めると、Pythonを別のサーバーに移動することもできます。

+1

あなたの答えによって少し混乱しています。私は彼がnginxの内部でWSGIの実装の任意の並べ替えを実行すると述べたことがわかりません。彼は主要なwsgi.orgサイトを参照しました。 uWSGIはWSGI仕様の実装であるため、WSGIとuWSGIの元々の比較は最初は少しばかげています。あなた自身は、「大きなPythonインタプリタを使ってnginxスレッドを1つ1つ増やしている」という混乱した形で、一般的なWSGI用語を使用しています。 WSGI仕様自体はそれを行うことはできません。実装だけが可能です。 –

+1

nginx + mod_wsgi(プラグイン可能モジュール)とnginx + uWSGI(アプリケーションサーバーコンテナ)を比較していると意味があります。 – clime

+0

Nginxを使用してPython Webアプリケーションを実行する場合、Manlio Perilloのmod_wsgiはデッドウェアであり、推奨されていないので、良いソリューションはgunicornまたはuWSGIのWSGIか、FlupのFastCGIですか? – Gulbahar

68

この混乱は、いくつかの情報源からの詳細の欠如、これらのプロトコルの命名、および実際にはWSGIのためです。

概要:

  1. WSGIとuwsgi は両方のプロトコルではなく、サーバです。ロードバランシングのためにWebサーバーと通信するために使用されます。特に、純粋なHTTPが提供できない特別な機能を利用するために使用されます。これまでのところ、Nginxとチェロキーはこのプロトコルを実装しています。
  2. uWSGIはサーバーであり、実装するプロトコルの1つにWSGI(uwsgiプロトコルとuWSGIサーバーを混同しないでください)があります。 WSGIはPython specificationです。 WSGI仕様のいくつかの実装があり、アプリケーションサーバー/ Webサーバー以外の用途に使用することを意図していますが、かなりの数のWSGIアプリケーションサーバーがあります(CherryPyは、まれに生産準備が整ったWSGI準拠のWebサーバーあなたがすでに十分に混乱していなかったら!)。
  3. uwsgiとWSGIを比較すると、オレンジとリンゴが比較されます。
+3

Typo: "1. ** uwsgi **はサーバーではないプロトコルです。" - > "1. ** WSGI **はサーバーではないプロトコルです。" – Aman

+6

実際、1について書いたものは正しいですが、WSGIはuwsgiと同様にプロトコルなので、書いた2つのステートメントは正しいものです。もちろん、1のコンテキストの残りの部分はありません。これは、uWSGIサーバーによって使用されるプロトコルです。 http://wiki.nginx.org/HttpUwsgiModule、 - 「uwsgiプロトコルとuwsgiプロトコルを使用するuWSGIサーバーを混同しないでください」 –

+3

ああ、大丈夫です。私はあなたが文1と "wsgiはプロトコルです"との間にコンスタルを描こうとしていると思っていました。 "uwsgiはプロトコルを実装するサーバです"。 – Aman

12

私はこれをここに信じています。http://flask.pocoo.org/docs/deploying/uwsgi/は混乱を解消する良い答えです。問題は愚かではない、2つの条件を見て、mod_PHPの世界の外でどのように物事が動作するかについての事前情報はありません(PHPや人には何もありません)

サイトは現実的に必要とされている違いは何ですかnginxの良い展開例です。

関連する問題