g
とcurrent_app
のドキュメントを読んでいると思います。それでは、私はそれから理解できる:
current_app
を:
要求を処理するアプリケーションを指します。これは、が複数のアプリケーションを同時にサポートする拡張機能の場合に便利ですが並行して実行されています。
[重点鉱山]
だから、source codeから、g
店のすべてが、現在のアプリケーションのコンテキストを取得している:
だから、
def _lookup_app_object(name):
top = _app_ctx_stack.top
if top is None:
raise RuntimeError(_app_ctx_err_msg)
return getattr(top, name)
def _find_app():
top = _app_ctx_stack.top
if top is None:
raise RuntimeError(_app_ctx_err_msg)
return top.app
current_app = LocalProxy(_find_app)
g = LocalProxy(partial(_lookup_app_object, 'g'))
あなたは、いくつかのアプリケーションを実行している場合current_app
は現在のもの(明白な、右)を参照し、g
はすべてのものを参照します。
複数のアプリケーションを実行しても、なぜ「g」が必要ですか?私が置いたデータは、現在の要求の終わりまで正確に生き残ることができます(私はいつも1つのアプリケーションによって処理されると想定しています)。だから私のデータを 'current_app'に入れないのはなぜですか? – max
しかし、コンテキストを分離することはそれにはあまり適していません。アプリケーション特有のコンテキストを 'current_app'に格納し、' g'にはそのアプリケーション固有のものをすべて格納しますか? –