記事ディレクトリ
WSGIインターフェース
WSGI インターフェイスの定義は非常に単純で、Web 開発者は HTTP リクエストに応答する関数を実装するだけで済みます。「Hello, web!」の最も単純な Web バージョンを見てみましょう。
def application(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/html')])
return '<h1>Hello, web!</h1>'
上記のapplication()
関数は WSGI 標準に準拠した HTTP 処理関数であり、次の 2 つのパラメータを受け取ります。
environ
: すべての HTTP リクエスト情報を含む dict オブジェクト。start_response
: HTTPレスポンスを送信する関数です。
application()
関数内で次を呼び出します。
start_response('200 OK', [('Content-Type', 'text/html')])
HTTP 応答のヘッダーが送信されます。ヘッダーは 1 回だけ送信できる、つまりstart_response()
関数は 1 回だけ呼び出せることに注意してください。start_response()
この関数は 2 つのパラメーターを受け取ります。1 つは HTTP 応答コード、もう 1 つはリストで表される HTTP ヘッダーのセットで、各ヘッダーは 2 つの文字列を含むタプルで表されます。
通常、Content-Type
ヘッダーはブラウザに送信される必要があります。他の一般的に使用される多くの HTTP ヘッダーも送信する必要があります。
その後、関数の戻り値が'<h1>Hello, web!</h1>'
HTTP レスポンスの Body としてブラウザに送信されます。
WSGI で重要なのは、environ
この dict オブジェクトから HTTP リクエスト情報を取得し、HTML を構築し、start_response()
ヘッダーを送信し、最後にボディを返す方法です。
関数全体application()
自体には HTTP 解析のいかなる部分も含まれていません。つまり、基礎となるコードを自分で記述する必要はなく、より高いレベルでリクエストに応答する方法を検討する責任があるだけです。
しかし、ちょっと待ってください、application()
この関数はどのように呼ばれるのでしょうか? 自分自身で呼び出すと、2 つのパラメータの合計を提供できずenviron
、start_response
返された str をブラウザに送信できません。
したがって、application()
この関数は WSGI サーバーによって呼び出される必要があります。WSGI 仕様に準拠するサーバーは多数あり、そのうちの 1 つを選択して使用できます。application()
ただし、ここでは、作成した関数が本当にブラウザに HTML を出力できるかどうかをできるだけ早くテストしたいだけなので、最も単純な WSGI サーバーをすばやく見つけて Web アプリケーションを実行する必要があります。
幸いなことに、Python には WSGI サーバーが組み込まれており、このモジュールは と呼ばれ、wsgiref
純粋な Python で書かれた WSGI サーバーのリファレンス実装です。いわゆる「リファレンス実装」とは、実装が WSGI 標準に完全に準拠しているものの、運用効率は考慮されておらず、開発とテストのみに使用されることを意味します。
先進的な事例
【Python】Pythonで単語当てゲームを実現 - 知力と運に挑戦!
[Python] Python tkinter ライブラリは重量単位変換用の GUI プログラムを実装します
[Python] Selenium を使用して (2023 Blog Star) エントリを取得します
【Python】SeleniumとChrome WebDriverを使って「Tencent Cloud Studio実践合宿」の記事情報を取得する
Tencent Cloud Cloud Studio を使用してバイドゥ AI のスケジューリングを実現し、テキスト認識を実現します
【Pythonで楽しむシリーズ【Xiaobi必見】Pythonマルチスレッドクローラー:絵文字パッケージWebサイトの画像をダウンロード
【Pythonで遊ぶシリーズ】 【小白さん必見】Pythonを使って双世丘の履歴データをクロールして視覚的に分析する
【Pythonで遊ぶシリーズ】 【Xiaobiさん必見】Pythonクローラー技術を使ってプロキシIPを取得してファイルに保存する
【シャオバイ必見】PILライブラリを使ってランク別・列別の複数画像の合成を実現するPython画像合成例
【Xiaobai必見】Pythonクローラーの実戦は女神の写真を一括ダウンロードしてローカルに保存
【Xiaobi必見】Pythonワードクラウドジェネレーターの詳細な分析とコード実装
【Xiaobai必見】NBA選手データの例をPythonでクロール
【Xiaobiさん必見】Pythonでヒマラヤ音声をクロールして保存するサンプルコード
【シャオバイ必見】Pythonを使ってリーグ・オブ・レジェンドのスキン画像を一括ダウンロードする技術的実現
【Xiaobai必見】Pythonクローラーのデータ処理と可視化
【シャオバイ必見】栄光王のヒーロースキン画像を簡単に入手できるPythonクローラープログラム
【Xiaobiさん必見】Pythonを使ってパーソナライズされたリストのWord文書を生成する
【小白必見】Pythonクローラー戦闘:陰陽師のWebサイトから写真を取得して自動保存
Xiaobai必見の図書館管理システムシリーズ - ログインおよび登録機能のサンプルコード
小白の実戦100例:小白入門に最適な完全かつシンプルな双世丘宝くじ当選判定プログラム
geopandas と Shapely (.shp) を使用した地理空間データの処理と視覚化
セレンを使用して Maoyan の映画リスト データをクロールする
画像強調アルゴリズム Retinex の原理と実装の詳細な説明
クローラー入門ガイド (8): 視覚的な分析のための気象データ クローラー プログラムを作成する
クローラー入門(7):SeleniumとBeautifulSoupを使ってDouban映画トップ250をクロールする作例解説【爬虫類Xiaobai必見】
クローラー入門ガイド (6): クローラー対策と高度なスキル: IP プロキシ、ユーザー エージェント偽装、Cookie バイパス ログイン検証および検証コード識別ツール
クローラ入門(5):分散クローラと同時実行制御 【クローリング効率向上と要求合理性制御の実装方法】
クローラー入門 (4): Selenium と API を使用して動的 Web ページをクロールする最良の方法
クローラー入門ガイド (3): Python ネットワーク リクエストと一般的なクローラー対策戦略
クローラー入門 (2): データの抽出と処理に正規表現を使用する方法
画像認識における深層学習モデルの応用: CIFAR-10 データセットの実践と精度分析
Python オブジェクト指向プログラミングの基本とサンプル コード
MySQL データベース操作ガイド: Python を使用して操作を追加、削除、変更、クエリする方法を学習します。
Python ファイル操作ガイド: エンコード、読み取り、書き込み、例外処理
PythonとSeleniumを使ってクローリングを自動化#【ドラゴンボートフェスティバル特別公募】究極のテクノロジーを探求、未来はあなた次第「宗」 #寄稿記事
Python マルチスレッドおよびマルチプロセスのチュートリアル: 包括的な分析、コードケース、最適化スキル
Selenium 自動化ツールセット - 完全なガイドとチュートリアル
Python Web クローラーの基礎から実戦までのチュートリアル
Python 入門チュートリアル: for ループ、while ループ、文字列操作、ファイルの読み書き、例外処理の基礎知識をマスターします。
Pandas データ処理と分析チュートリアル: 基本から実際の戦闘まで
Python でよく使用されるデータ型と関連する操作の詳細な説明
【2023年最新】分類モデルの指標を改善する6つの主要なスキームを詳しく解説