96

NginxでWSGI VS uWSGIを使用する場合の長所/短所を誰か説明してください。

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

前もって感謝します

4

3 に答える 3

108

Ok, guys this confusion is because of lack of detail from several sources, and the naming of these protocols, and what WSGI actually is.

Summary:

  1. WSGI and uwsgi both ARE protocols, not servers. It is used to communicate with web servers for load balancing and especially to take advantage of extra features that pure HTTP can not provide. So far Nginx and Cherokee have implemented this protocol.
  2. uWSGI is a server and one of the protocols it implements is WSGI (do not confuse the uwsgi protocol with the uWSGI server). WSGI is a Python specification. There are several implementations of the WSGI specification and it's intended to be used for more than just application servers/web servers, but there are quite a few WSGI application servers (ie. CherryPy, which also happens to have a production ready WSGI compliant web server, if you weren't confused enough already!).
  3. Comparing uwsgi to WSGI is comparing oranges to apples.
于 2012-01-01T01:01:52.850 に答える
34

通常、PythonはメインのWebサーバーとは別のプロセスで実行するのが最適です。そうすれば、Webサーバーは静的コンテンツを非常に高速に提供する多数の小さなスレッドを持つことができますが、個別のPythonプロセスは大きくて重いものになり、それぞれが独自のPythonインタープリターを実行します。WSGI大きなPythonインタープリターを使用すると、nginxスレッドのすべてが肥大化するため、プレーンは悪いです。動的コンテンツを提供するために起動する重いPythonスレッドの数の選択とは関係なく、nginxを解放してコンテンツを提供するだけでなく、実行する小さな軽いnginxスレッドの数を選択できるため、またはその背後を使用する方がはるかに優れflupgunicornuWSGIます。現時点ではnginx人々は非常に満足しているようですが、これら3つのオプションのいずれも問題なく機能するはずです。gunicorn

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

于 2011-10-12T12:37:08.360 に答える
20

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

このサイトは、実際に何が必要で、何が違いなのか、nginx の適切な展開例を説明しています。


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

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

最も一般的な uWSGI サーバーは uwsgi で、このガイドで使用します。先に進むために、必ずインストールしてください。

于 2012-03-19T17:38:37.680 に答える