しばらく mod_python を使用していたので、WSGI がいかに優れているかについての記事をますます読みましたが、その理由はよくわかりませんでした。
では、なぜそれに切り替える必要があるのでしょうか。利点は何ですか?それは難しいですか、そして学習曲線はそれだけの価値がありますか?
Python で洗練された Web アプリケーションを開発するには、おそらく DJango、Zope、Turbogears などのより包括的な Web 開発フレームワークを使用するでしょう。アプリケーション開発者として、WSGI についてあまり心配する必要はありません。これらのフレームワークが WSGI をサポートしていることだけは知っておく必要があります。WSGI を使用すると、Web サーバーと Web アプリケーション コードを分離できます。システム管理者は、Web アプリケーションが WSGI に準拠している限り、Web サーバーを変更できます。これらのフレームワークのいずれかで開発している場合は、とにかくこの条件を満たしています。
あなたが Web フレームワーク開発者 (DJango または Zope 自体を開発している) である場合は、WSGI をより深く理解する必要があります。
mod_wsgi 対 mod_python:
一般的な WSGI:
[1] - 各プロセスで個別の Python インタープリターを維持する preforking Apache との比較
ほとんどの Python フレームワークは wsgi を実装しています。Apache には mod_wsgi があり、その他には SCGI/FastCGI/AJP モジュール + Flup があります。そうすれば、1 つの Web サーバーに縛られることなく、個別の Python プロセスの利点をすべて享受できます。
開発者の観点から見た違いは、小さなラッパーといくつかのサーバー構成だけであるため、多くを再学習する必要はありません。
デプロイの観点から見ると、違いは、Python コードが Web ブラウザーとは別のプロセスに存在することです。つまり、
a) Python プロセスは、Web サーバーとは別のユーザーとして実行できます。これは、正しく使用すれば、セキュリティにとって価値があります。
b) Web サーバー プロセスに Python ランタイムを含める必要はありません。これは、サーバーが多くの「その他の」リクエスト (静的ファイルなど) といくつかの重い Python リクエストを実行する場合、パフォーマンスを大幅に向上させることができます。
WSGI は標準 API であり、Web サーバーを選択し、その前に Repoze などの WSGI パイプラインを配置できます。