App Engine アプリ用のプロファイラである Appstats は、Django 用ミドルウェアだけでなく、WSGI 用ミドルウェアも提供していました。考えてみれば、webapp フレームワークで使えないと SDK で提供しても意味無いですしね。だから Flask でも使えます。
appstats を Flask で使うためのコードは次の通り。
#!/usr/bin/env python from google.appengine.ext.webapp import util from google.appengine.ext.appstats import recording from flask import Flask app = Flask(__name__) # Appstats のミドルウェアを追加 app.wsgi_app = recording.appstats_wsgi_middleware(app.wsgi_app) @app.route("/") def index(): return "Hello world!" if __name__ == '__main__': util.run_wsgi_app(app)
あと、app.yaml を編集して、stats ページの URL を追加します。
application: statstest version: 1 runtime: python api_version: 1 handlers: - url: /stats.* script: $PYTHON_LIB/google/appengine/ext/appstats/ui.py - url: .* script: main.py
たったこれだけ。
実際に計測してみた結果がこちら。
アプリ起動直後だけ 1ms かかっていますが、それ以降は 0ms。Flask は内部で werkzeug を使ってリクエストをビューにマッピングしていますが、その部分の速度は気にする必要はなさそうですね。