これら2つの違いは何ですか?どちらが優れている/速い/信頼できる?
3 に答える
SCGIは、フロントエンドWebサーバーとWebアプリケーションを接続するための言語に依存しない手段です。WSGIは、Webアプリケーション用のPython固有のインターフェイス標準です。
どちらもCGIにルーツがありますが、スコープがかなり異なり、Webサーバー上のmod_scgiがSCGIサーバーとして実行されているWSGIアプリと通信するなど、両方を同時に使用することはかなり合理的です。WSGIアプリケーションをSCGIサーバーとして実行する複数のライブラリ実装があります(例:wsgitools、cherrypy)。
特定の実装とは対照的に、仕様が信頼できると見なすことができる限り、これらは両方とも「信頼できる」ものです。最近では、おそらくアプリケーションをWSGI呼び出し可能として記述し、デプロイメントの問題を個別に検討するでしょう。
たぶん、Apache + mod_wsgi(埋め込み)インターフェースはApache + mod_scgi +(SCGIラッパーlib)よりも少し速いかもしれませんが、おそらくそれは大きく異なることはないでしょう。さらに価値があるのは、さまざまなサーバー、プラットフォーム、および接続標準でアプリケーションを実行できることです。
SCGI (FastCGI と同様) は、Web サーバーと Web アプリケーション間のプロセス間通信に適した (シリアル化された) プロトコルです。
WSGI は Python API であり、2 つ (またはそれ以上) の Python WSGI 互換モジュールを同じプロセス (Python インタープリター) 内で接続します。1 つのモジュールは Web サーバーを表します (Python のインプロセス Web サーバー実装か、SCGI などを介した別のプロセスの Web サーバーへのゲートウェイのいずれかです)。もう 1 つのモジュールは、Web アプリケーションであるか、Web アプリケーションを表します。さらに、これら 2 つのモジュールの間にあるゼロ以上のモジュールは、WSGI の「ミドルウェア」モジュールとして機能し、セッション/クッキー管理、コンテンツ キャッシング、認証などを行う場合があります。WSGI API は、反復/ジェネレーターや callable の受け渡しなどの Python 言語機能を使用します。協調する WSGI 互換モジュール間のオブジェクト。