ホームページ >テクノロジー周辺機器 >IT業界 >Python Webアプリケーション:WSGIの基本
ここに可能な限り最も基本的なPython Webアプリがあります:
それだけです!ファイル全体。 app.pyと呼び、WSGI互換サーバーで実行すると、200ステータスのHello World Responseが表示されます。これにはGunicornを使用できます。 PIP(PIPインストールGunicorn)を介してインストールし、Gunicorn App:Appで実行します。このコマンドは、Gunicornに、アプリモジュールのアプリ変数からWSGIを呼び出すようにするように指示します。
今、あなたはかなり興奮するはずです。実行中のアプリケーションのためのわずか3行ですか?それは何らかのレコードでなければなりません(MOD_PHPが不正行為をしているため、PHPを除いて)。私はあなたがもっと知ることを希望しているに違いない。
この情報を使用できる方法をすでに考えているかもしれませんが、おそらく最も関連性の高いものはミドルウェアを書くことです。
ジャズアップ<span>def app(environ, start_fn): </span> start_fn<span>('200 OK', [('Content-Type', 'text/plain')]) </span> <span>return ["Hello World!\n"] </span>
<span>class app(object): </span> <span>def __init__(self, environ, start_fn): </span> self<span>.environ = environ </span> self<span>.start_fn = start_fn </span> <span>def __iter__(self): </span> self<span>.start_fn('200 OK', [('Content-Type', 'text/plain')]) </span> <span>yield "Hello World!\n" </span>ミドルウェアは、WSGIアプリの機能を簡単に拡張する簡単な方法です。呼び出し可能なものだけを提供する必要があるため、他の機能にまとめることができます。 たとえば、
環境の内容を調べたいとしています。この例のように、これを行うためにミドルウェアを簡単に作成できます。
他のいくつかの便利なミドルウェアのアイデア:
ビッグピラミッドをファイルの下部にしたくない場合は、一度に大量のミドルウェアを適用するためにRedimingを使用できます。
<span>class Application(object): </span> <span>def __call__(self, environ, start_fn): </span> start_fn<span>('200 OK', [('Content-Type', 'text/plain')]) </span> <span>yield "Hello World!\n" </span> app <span>= Application() </span>
start_fn引数を活用することにより、応答を変更するミドルウェアを作成することもできます。コンテンツタイプのヘッダーがテキスト/プレーンである場合、出力を逆転させるミドルウェアは次のとおりです。
start_fnの分離と応答のおかげでもう少し絡み合っていますが、それでも完全に実行可能です。 また、WSGIに厳密に仕様に準拠するには、応答の
closeメソッドを確認し、存在する場合は呼び出す必要があることに注意してください。レガシーWSGIアプリケーションは、ハンドラーを呼び出すときに反復可能ではなく、
書き込み<span>import pprint </span> <span>def handler(environ, start_fn): </span> start_fn<span>('200 OK', [('Content-Type', 'text/plain')]) </span> <span>return ["Hello World!\n"] </span> <span>def log_environ(handler): </span> <span>def _inner(environ, start_fn): </span> pprint<span>.pprint(environ) </span> <span>return handler(environ, start_fn) </span> <span>return _inner </span> app <span>= log_environ(handler) </span>関数を返すこともできます。ミドルウェアに古いアプリケーションをサポートしたい場合は、このケースを処理する必要がある場合があります。
生のWSGIで少し遊んでみると、Pythonが文字通り数十のWebフレームワークを持っている理由を理解し始めます。 WSGIは、ゼロから始めて何かを構築することを非常に簡単にします。たとえば、ルーティングの問題を検討している場合があります:
<span>import pprint </span> <span>def handle_error(handler): </span> <span>def _inner(environ, start_fn): </span> <span>try: </span> <span>return handler(environ, start_fn) </span> <span>except Exception as e: </span> <span>print e # Log error </span> start_fn<span>('500 Server Error', [('Content-Type', 'text/plain')]) </span> <span>return ['500 Server Error'] </span> <span>return _inner </span> <span>def wrap_query_params(handler): </span> <span>def _inner(environ, start_fn): </span> qs <span>= environ.get('QUERY_STRING') </span> environ<span>['QUERY_PARAMS'] = urlparse.parse_qs(qs) </span> <span>return handler(environ, start_fn) </span> <span>return _inner </span>
WSGIを直接操作することは、ライブラリを組み立てる柔軟性を
WSGIアプリを提供する方法はたくさんあります。私たちはすでにGunicornについて話しました。これはまともなオプションです。 UWSGIはもう1つの素晴らしいオプションです。静的資産を提供するために、これらの前にnginxのようなものをセットアップしてください。しっかりした出発点が必要です。
Python WebアプリケーションにおけるWSGIの役割は何ですか?WSGI、またはWebサーバーゲートウェイインターフェイスは、WebサーバーとWebアプリケーションの標準インターフェイスです。 Python Webアプリケーションでは、アプリケーションとWebサーバーがお互いにリクエストを通信して送信できるため、重要な役割を果たしています。 WSGIはブリッジとして機能し、Webサーバーがクライアント(Webブラウザーなど)からWebアプリケーションにリクエストを転送できるようにします。次に、アプリケーションはリクエストを処理し、Webサーバーを介してクライアントに応答を送り返します。 Webサーバーは、Webアプリケーションと通信します。クライアントがWebサーバーにリクエストを送信すると、サーバーはWSGIインターフェイスを使用してその要求をWebアプリケーションに渡します。申請はリクエストを処理し、応答を返し、サーバーはクライアントに送り返します。このプロセスにより、特定の実装に関係なく、Webサーバーとアプリケーションが対話するための一貫した信頼できる方法が可能になります。 Pythonで利用でき、それぞれに独自の長所と短所があります。最も一般的に使用されるものには、Gunicorn、UWSGI、MOD_WSGIが含まれます。 Gunicornはそのシンプルさと使いやすさで知られていますが、UWSGIはその速度と効率で賞賛されています。一方、MOD_WSGIはApacheサーバーのモジュールであり、エンタープライズ環境でよく使用されます。
Python WebアプリケーションでWSGIを使用することの利点は何ですか?まず、Webサーバーとアプリケーションの標準インターフェイスを提供し、Python Webアプリケーションの開発と展開を容易にします。第二に、さまざまなWSGI互換サーバーとアプリケーションから選択できるため、柔軟性を高めることができます。最後に、異なるサーバーとミドルウェアで同じWSGIアプリケーションを使用できるため、コードの再利用性を促進します。実際、FlaskアプリケーションはデフォルトではWSGIアプリケーションです。 Flaskアプリケーションを作成すると、実際にFlaskフレームワークが着信リクエストを処理して応答を送信するために使用するWSGIアプリケーションを作成します。
以上がPython Webアプリケーション:WSGIの基本の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。