Webから、WSGIがPythonWeb開発/フレームワーク用のCGIであることがわかりました。FCGIは、さまざまな言語のより一般化されたゲートウェイのようです。PythonとC/++の言語に関して、2つのパフォーマンスの違いがわかりません。
2 に答える
正解です。WSGI は Python のプログラム API 定義であり、FASTCGI は言語に依存しないソケット ワイヤ プロトコル定義です。事実上、それらは異なるレイヤーにあり、WSGI は上位レイヤーです。つまり、たまたま FASTCGI を使用して Web サーバーと通信したものの上に WSGI を実装することはできますが、その逆はできません。
一般に、FASTCGI がソケット ワイヤ プロトコルであるということは、それを使用するには、その上にある種のプログラム インターフェイスが常に必要であることを意味します。Python の場合、そのようなオプションの 1 つに WSGI があります。FASTCGI は目的を達成するための手段にすぎないため、WSGI は同等のソケット ワイヤ プロトコルではなく、FASTCGI 自体のユーザーであるため、そのパフォーマンスを WSGI と実際に比較することはできません。
FASTCGI の上でさまざまな言語インターフェイスのパフォーマンスを試して比較することもできますが、一般的には、下位のネットワーク レイヤーとサーバー リクエストの処理がボトルネックではないため、それ自体にはまったく意味がありません。代わりに、アプリケーション コードとデータベースになります。
それらは2つの異なるものです。WSGI は、Web アプリケーションを作成するための Python 固有のインターフェイスです。WSGI インターフェイスを提供するためのほぼすべての Web サーバー プロトコル用のラッパーがあります。FastCGI (FCGI) は、そのような Web サーバー プロトコルの 1 つです。したがって、WSGI は抽象化レイヤーであり、CGI / FastCGI / mod_python は実際の Web サーバーがアプリケーションと対話する方法です。一部のコードは、ネイティブ インターフェイスを WSGI に変換する必要があります (CGI モジュールがwsgiref
にありflup
、FastCGI 用にあるなど)。Apache モジュールで直接変換を行う Apache 用もmod_wsgi
あるため、Python ラッパーは必要ありません。