WEBWEBEnvironmentsEnvironments
nasa9084nasa9084
自己紹介自己紹介名前
北村壮大 : Masahiro KitamuraHN : nasa9084
所属
北海道大学
工学部
情報エレクトロニクス学科
コンピュータサイエンスコース
情報認識学研究室
何らかのサービスを提供するソフトウェア何らかのサービスを提供するソフトウェア
Web ServerApplication ServerMail ServerDatabase ServerFTP ServerProxy Server
今回はHTTP ServerとApplication Serverが登場
Web ServerWeb ServerクライアントからのHTTPリクエストに対してHTTPレスポンスでリソースを返す
→HTTP Server
代表的なHTTP Server代表的なHTTP Server
Application ServerApplication Serverアプリケーションを呼び出して仕事をしてくれる
HTTPの復習HTTPの復習クライアントがリクエストメッセージをサーバに送る
サーバがレスポンスメッセージをクライアントに返す
メッセージメッセージ
ヘッダとボディで構成される
テキスト
CGICGICommon Gateway Interface
Web Serverでプログラムを動かす仕組み
動作動作
リクエストを受け取る1. CGIプログラムを起動する2. CGIプログラムが結果を返す3. クライアントにレスポンスを返す4.
標準入出力標準入出力
HTTPリクエストのボディは標準入力へ標準出力はそのまま クライアントに送られる
環境変数(environment variable)環境変数(environment variable)OS上のタスクがデータを共有するための変数
QUERY_STRINGクライアントが要求したURIのうち、検索文字列部
CONTENT_LENGTHクライアントからのHTTPリクエストのボディ部の長さ
PATH_INFOCGIプログラムに対応する仮想パスの後ろに続いた余分のパス
PATH_TRANSLATEDPATH_INFOを物理パスに対応させたもの
WSGIWSGIWeb Server Gateway Interface
Python WebアプリケーションとWeb Serverを接続するための標準仕様
Python Webアプリケーションの実装方法Python Webアプリケーションの実装方法CGIFastCGImod_python
統一したい!
動作動作
リクエストを受け取る1. アプリケーションのエントリポイントをcallする2. アプリケーションの返り値を使ってレスポンスを作る3.
callcallWSGIアプリケーションはcallableオブジェクトを持つ
→コレを呼び出す
callableオブジェクトcallableオブジェクトcallable == 呼び出し可能
hoge()のような形
関数
__call__が定義されたクラス
アプリケーション引数アプリケーション引数
環境変数(env)1. start_responseオブジェクト2.
start_responseオブジェクトstart_responseオブジェクトステータスコードやHTTPレスポンスヘッダを入れる
→コレをもとにサーバがレスポンスをつくる
ボディボディ
iterableオブジェクトの形で返す
iterableiterableiterable == 反復可能
listtupledict
Rubyの人が思ったRubyの人が思った
"WSGIいいな。。。""WSGIいいな。。。"
動作動作
リクエストを受け取る1. アプリケーションのエントリポイントをcallする2. アプリケーションの返り値でレスポンスを作る3.
アプリケーション引数アプリケーション引数
環境変数(env)
アプリケーションの返り値アプリケーションの返り値
ステータスコード(status)HTTPヘッダ(headers)ボディ(body)
→3つまとめて配列にして返す
PSGIPSGIPerl Web Server Gateway Interface
Perlの人が思ったPerlの人が思った
"WSGIとかRackとかいいな。。。""WSGIとかRackとかいいな。。。"
大体Rackと同じ大体Rackと同じ
THANK YOUTHANK YOU