Flask “g” とは
Flask “g”
Flask API gアプリケーション コンテキスト中にデータを格納できる名前空間オブジェクト 。これは のインスタンスで Flask.app_ctx_globals_class、デフォルトは ですctx._AppCtxGlobals。これは、リクエスト中にリソースを保存するのに適した場所です。たとえば、before_request関数はセッション ID からユーザー オブジェクトをロードし、g.userビュー関数で使用するように設定できます。
Sessionと似たような物かな。ではまずはsessionから
Flask “session”
Flask API Session設定したFlask.secret_key(または から構成した ) 場合は、Flask アプリケーションでsessionSECRET_KEYを使用できます。セッションは、あるリクエストから別のリクエストへの情報を記憶することを可能にします。Flask がこれを行う方法は、署名付き Cookie を使用することです。ユーザーはセッションの内容を見ることはできますが、秘密鍵を知らなければ変更することはできません。そのため、複雑で推測できないものに設定してください。現在のセッションにアクセスするには、オブジェクトを使用できますsession。
基本はブラウザを閉じるまではsessionが有効の為、各画面遷移後でも同じ値を使用したい場合などsession利用
sessionの最大容量
大きいサイズのテキストファイルを用意して実行
制限としては4093バイトですね
import os
text_dir = os.path.dirname(__file__)
test_file = os.path.join(text_dir, 'text', 'test.log')
if os.path.isfile(test_file):
f = open(test_file, "r", encoding='UTF-8')
data = f.read()
f.close
session['test'] = data
-- 結果 --
UserWarning: The 'session' cookie is too large: the value was 42106 bytes but the header required 26 extra bytes. The final size was 42132 bytes but the limit is 4093 bytes. Browsers may silently ignore cookies larger than this.
訳:UserWarning: 値は42106バイトでしたが、ヘッダーに26バイトの追加を必要としました。最終的なサイズは42132バイトでしたが、制限値は4093バイトです。ブラウザはこれより大きいクッキーを黙って無視するかもしれません。
gの最大容量
200MBのテキストファイルを用意して実行
・・・無制限?
import os
text_dir = os.path.dirname(__file__)
test_file = os.path.join(text_dir, 'text', 'test.log')
if os.path.isfile(test_file):
f = open(test_file, "r", encoding='UTF-8')
data = f.read()
f.close
g.test = data
-- 結果 --
正常終了
g と session の違い
g | session | |
---|---|---|
ライブラリ | from flask import g | from flask import session |
最大容量 | 無制限(200MBまでは確認) | 4093バイト |
有効 | 1リクエストの間のみ | ブラウザを閉じるまで(デフォルト) |
値を画面間で引き渡す必要がある場合はsessionで、1リクエストの中(各処理関数間など)だけ使用する場合はgが良いかと。


名前:田中寛之
今まで約20年間、出版社、マスコミ、化粧品会社、システム会社・病院・クリニックにてシステムエンジニアとして勤務。現在、個人事業主「ONLINE-WORLD」として活動し、42歳からPythonを始めました!


名前:田中寛之
今まで約20年間、出版社、マスコミ、化粧品会社、システム会社・病院・クリニックにてシステムエンジニアとして勤務。現在、個人事業主「ONLINE-WORLD」として活動し、42歳からPythonを始めました!