Python

Python Bottleのソースを読む リクエスト・レスポンス編

投稿日:2016年12月5日 更新日:


Pythonの軽量WebフレームワークBottleのソースを読む リクエスト・レスポンス編
 

Class Hierarchy

ここの部分

20160213010717

リクエスト受付からレスポンスまで

前回、サーバの立ち上げ時にルーティングが読み込まれるところまでを確認したので今回はリクエスト受付からレスポンスを返すまでを見てみる。

まずリクエストが来るとwsgiref/handlers.pyのrunが呼ばれ、Bottleの__call__が呼び出される

wsgiref/handlers.py

bottle.py

リクエストを処理する際に、LocalRequestのbindを呼び出しBaseRequestのコンストラクタにてenvironとLocalRequestをセットする。これでBaseRequestのラッパーからパラメータを取得可能になる。レスポンスも同様にLocalResponseのbindを呼び出す。

BaseRequestのコンストラクタ

リクエスト情報は以下のように取得可能になる

LocalRequestは以下の通りマルチスレッドに対応している

#: A thread-safe instance of :class:LocalRequest. If accessed from within a
#: request callback, this instance always refers to the *current* request
#: (even on a multi-threaded server).

hookポイントで以下のようにbefore_requestとafter_requestが利用可能

_handleの_inner_handle()にてrouteのactionを呼び出しresponseを取得する

リダイレクトは以下のメソッドが用意されている


-Python
-,

執筆者:

関連記事

Python Bottleのソースを読む 起動編

Pythonの軽量WebフレームワークBottleのソースを読む 起動編 Bottleとは Bottle is a fast, simple and lightweight WSGI micro we …

Python Bottleのソースを読む テンプレート編

前回に続きPythonの軽量WebフレームワークBottleのソースを読む テンプレート編   Class Hierarchy ここの部分   Bottleのテンプレートについて Bottleのテンプ …

Python Bottleのソースを読む プラグイン編

Pythonの軽量WebフレームワークBottleのソースを読む プラグイン編 Bottleを触ってみると通常のWebフレームワークには用意されているであろう機能がなかったりします。これはマイクロフレ …

FlaskをBottleと比較した雑感

以前Bottleのソースをチェックしてみた流れでFlaskも見てみた。結論から言うとBottleと大して変わらん。もちろんFlaskのほうがコード量が多く多少リッチではあるもののざっくり機能ベースで言 …

Python Bottleのソースを読む ルータ編

Pythonの軽量WebフレームワークBottleのソースを読む ルータ編   Class Hierarchy ここの部分   Bottleのルータについて bottleのルータは特に継承関係はなくR …