アプリケーションレベルで値を使いまわす為にはアプリケーションのコンテキストを使用する。
Flaskではアプリケーションコンテキストには以下の2つが提供されている。
コンテキスト | 生存期間 |
---|---|
g | リクエスト単位 |
current_app | アプリケーション単位 |
gだとリクエストを跨いだ使いまわしは出来ないので今回はcurrent_appを使用する
from flask import Flask, current_app
app = Flask(__name__)
class Sample(object):
def getObj(self):
with app.app_context():
if getattr(current_app, 'obj', None) is None: #オブジェクトの存在チェック
current_app.obj = #使いまわしたいオブジェクトの生成
return current_app.obj