Falconという高速・シンプルなWebアプリフレームワークを触ってみましたー

PHPの高速WebアプリフレームワークでPhalconというのがありますが、PythonはFalconになります。

ということで、試しにFalconでHerokuにアプリ立ててみました↓

握手会適正判定フォーム

Falconの概要

  • PythonのWebアプリフレームワーク
  • とにかく速いらしい
  • シンプル
  • テンプレートエンジンやORMは含まない

インストール

安定のpip。WSGIサーバのgunicornも一緒にインストールしておく。

基本的な使い方

GET/POSTの例(index.pyとして作成)

あとはWSGIアプリとして動かせばOK

Cookie操作

リダイレクト

最新だとException投げればリダイレクトできるみたいですが、0.3系は以下のようにして対応

Hook

デコレータを利用して、任意のハンドラの前処理、後処理をする仕組み。こんな感じで書く

ミドルウェア

Hookのグローバルバージョン。任意のハンドラではなく全てのハンドラに適用される。

Hookと組み合わせて利用すると以下の順番で処理される模様

  1. Middleware process_request
  2. Middleware process_resource
  3. Hook before
  4. Execute Handler
  5. Hook after
  6. Middleware process_response

Herokuにデプロイしてみる

gunicornのProcfileを書いてデプロイすればOK。

補足

テンプレートエンジンがついていないので、自前で用意してあげる必要がある。jinja2使う場合は

でインストールして、以下のように記述すればOK

ただし、テンプレートエンジンのコストでFalconの高速性をスポイルするかもしれないので、そこらへんは検討する必要があるかも。HTMLを返すアプリではなくJSON、XMLを返すAPIサーバ向けのフレームワーク、というイメージです。

参考URL