WSGIを学び、Pythonに小さなものを汗まかせましょう

開示: あなたのサポートはサイトの運営を維持するのに役立ちます!このページで推奨する一部のサービスについては、紹介料を稼ぎます.


かつて、PythonでのWebアプリケーションの開発には問題がありました。開発者は特別な注意を払い、WebアプリケーションがPythonのさまざまなWebサーバーとさまざまなWebフレームワークでスムーズに実行されるようにする必要があったためです。アプリケーション開発中に特定のPython Webフレームワークを選択すると、完成したアプリケーションを実行できる互換性のあるWebサーバーの選択が制限されました.

この問題の解決策として、Webサーバーゲートウェイインターフェイス(WSGI)が導入されました。 WSGIは、WebサーバーとPython Webフレームワークまたはアプリケーション間の通信のための標準化されたインターフェースの仕様です。アプリケーションまたはフレームワークがWSGI仕様に準拠するように作成されている場合、同じ仕様をサポートする任意のWebサーバーで実行されます。.

もちろん、標準化されたインターフェース仕様を持つプログラミング言語はPythonだけではありません。多くの最新のプログラミング言語は同じアプローチを使用しているため、たとえば、Rubyは独自のRackサーバーインターフェイスを使用し、JavaScriptはJSGIゲートウェイインターフェイスに依存していますが、PerlはPSGIを使用しています.

簡単な歴史

WSGI仕様は、もともとはPython Enhancement Proposal 333(PEP 333)で導入され、Phillip J Ebyによって作成され、2003年12月に公開されました。 、シンプルで普遍的で、既存のサーバーとフレームワークの相互接続を容易にする必要があった.

WSGIは、Pythonサーバーとフレームワークの作成者および開発者によってすぐに採用され、Python Webアプリケーション開発の事実上の標準になりました。 WSGI仕様の最新バージョンはV1.0.1で、2010年9月26日にPEP 3333で公開されています。.

WSGI仕様の概要

WSGI仕様では、サーバー側、アプリケーション側、およびインターフェースのサーバー側とアプリケーション側の両方を実装するミドルウェアコンポーネントの3つの特定の役割が宣言されています。.

アプリケーション側

WSGIのアプリケーション側は、2つの引数を受け入れ、コードから呼び出すことができる単純なオブジェクトです。この例は、静的な「Hello world!」を返す単純なWSGIアプリケーションを示しています。ページ:

def simple_app(environ、start_response):
ステータス= ‘200 OK’
response_headers = [( ‘Content-type’、 ‘text / plain’)]
start_response(ステータス、response_headers)
戻る[‘Hello world!n’]

すべてのサーバーがそのような繰り返し要求を行うため、アプリケーション側オブジェクトを複数回呼び出すことができます.

サーバー側

WSGIのサーバー側は、HTTPクライアントから要求を受信し、要求ごとに1回アプリケーションを呼び出し、アプリケーションから返された応答をクライアントに送信します。.

ミドルウェアコンポーネント

WSGI仕様で定義されたミドルウェアコンポーネントは、インターフェースの両側(アプリケーション側とサーバー側)を使用します。ミドルウェア機能は、サーバー側とアプリケーション側の両方に透過的です.

ミドルウェアコンポーネントは通常、ターゲットURLに基​​づいてリクエストをさまざまなアプリケーションオブジェクトにルーティングするなどの機能を実行し、複数のアプリケーションを同じプロセスで並行して実行できるようにします。負荷分散、リモート処理、コンテンツの後処理を可能にします.

この例は、受け取ったすべてのものを大文字にする単純なミドルウェアコンポーネントを示しています。

アッパーウェアクラス:
def __init __(self、app):
self.wrapped_app = app

def __call __(self、environ、start_response):
self.wrapped_app(environ、start_response)のデータ:
data.upper()を返す

WSGIの使用

WSGIは現在、Python Webアプリケーション開発の標準として受け入れられています。 Pythonバージョン2.5以降のリリースには、WSGIサポートが組み込まれています。 Pythonバージョン2.4以前では、WSGIサポートを個別にインストールできます。 PEP 3333で宣言されたWSGI仕様の更新バージョンがPython 3で利用可能です.

Pythonでウェブアプリケーションを開発している場合は、Django、Flask、Bottle Pythonウェブフレームワーク、またはその他の現在のPythonフレームワークなど、業界で実績のある標準を使用するだけです。アプリケーションを構築するために、WSGI仕様について詳しく学ぶ必要はありません。現在の世代のWebアプリケーションフレームワークを使用するだけで、それらはすべてWSGIをサポートするため、平文である必要があります。.

一方、新しいWebアプリケーションフレームワークを自分で開発している場合は、WSGI仕様をよく確認し、WSGIの学習リソースを確認する必要があります。.

WSGIリソース

WSGIの詳細を確認する必要がある場合は、次のオンラインリソースをご覧ください。

  • WSGIコミュニティサイトは、明らかに最初に訪れる場所です。役立つリソースはたくさんあります。また、WSGIについて学ぶのセクションもあります。このサイトには、WSGIをサポートするフレームワークとサーバーもリストされています.
  • 詳細については、完全なPython拡張提案333およびPython拡張提案3333もご覧ください。.
  • Pylons Web開発フレームワークのオンラインドキュメントには、WSGIに関する非常に優れた詳細なセクションがあります。.
  • CodepointのWSGIチュートリアルでは、いくつかの簡単な例を使用して、実際のWSGI仕様を示します.

WSGI Books

特にWSGIを扱っている本は手に入れるのが難しく、通常、次のようなさまざまなPython Webアプリケーションプログラミングの本にWSGIを扱った章があります。

  • Pythonネットワークプログラミングの基礎:Goerzen、Bower、およびRhodesによるPythonでネットワークアプリケーションを構築するための包括的なガイド:Webアプリケーションプログラミングに関する章では、コンポーネントの相互運用性に関するWSGI標準と、Djangoなどの最新のWebフレームワークの両方を扱います.

結論

WSGIは重要なPython仕様ですが、実際には、ほとんどのPython開発者が心配する必要はありません。主要なフレームワークを使用している限り、再考せずにWSGIを利用できます。つまり、仕様はすべての主要なPythonフレームワークに実装されているため、ほとんどの開発者はWSGIに関する深い知識を必要としません。.

そうは言っても、WSGIはPythonプログラミングの前提条件ではありませんが、依然として適切です。注目すべき例外の1つは、PythonアプリケーションではなくPythonフレームワークで作業することを決定したソフトウェアエンジニアです。彼らに関する限り、WSGIは不可欠な仕様であり、WSGIをフレームワークに統合することを希望する場合は、WSGIの詳細を知る必要があります。.

これは明らかに(非常に)タイトなニッチですが、それはWSGIの開発が停滞していることを意味するものではありません。それは単にコミュニティが大きくないことを意味しますが、そこにあります.

参考資料とリソース

コーディングと開発に関連するガイド、チュートリアル、およびインフォグラフィックが他にもあります。

  • Pythonの概要、リソース、およびFAQ:Pythonを初めて使用する場合は、この概要で始められます.
  • MPI —紹介、履歴、およびリソース:メッセージパッシングインターフェース(MPI)により、プログラムと他のコンピューターシステムは互いにメッセージを送信できます。.
  • Linuxプログラミングの紹介とリソース:このLinuxプログラミングの詳細は、すべてのアクションが存在するカーネルにまで及びます。.

どのコードを学ぶべきか?

あなたがコーディングするためにどのプログラミング言語を学ぶべきかについて混乱していますか?私たちのインフォグラフィックをチェックして、どのコードを学ぶべきですか?これは、言語のさまざまな側面について説明するだけでなく、「生活のためにJavaプログラミングを行うことでどれだけのお金を稼ぐことができるか」などの重要な質問に答えます。

どのコードを学ぶべきですか?
どのコードを学ぶべきか?

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me