私は大量のユーザー入力を受け取り、計算を実行し、その結果をさまざまなWebページに投影するデータ分析Flaskアプリケーションを構築しています。私はpandas Dataframeを使用して入力を保存し、計算を実行しています。次に、DFを辞書に変換し、セッションオブジェクトに格納します。Flask:セッションの最大サイズが小さすぎる
セッションオブジェクトが〜4kバイトしか保持できないという問題があります。いくつかのページがデータを読み込むので、私はこの大量のデータ(〜5k〜50k)を1つのリクエストから別のリクエスト(セッションオブジェクトは完全には小さなメモリサイズ用)に渡す手段が必要です。
セッションオブジェクトの記憶域の上限を設定することはできますか(4kはCookieの制限で、セッションオブジェクトはCookieではないと思います)。それとも、私がここでやるべきことがありますか?(データベースに書き込むなど)
EDIT:
私は実行可能な代替案は、データベース(私の場合はMongoDB)からのデータをつかむローカル変数に格納し、直接テンプレートにその変数を渡すことであろうと思っています。これに不利な点はありますか?そして、テンプレートにディレクトリを渡すことができるメモリ量には限界がありますか?以下の例を参照してください。
@app.route('/results')
def results():
# get data I need from database (~5k-50k bytes)
data = mongo.db[collection_name].find_one({'key': 'query'})
# pass directory to template (instead of storing in session object)
return render_template('results_page.html', data=data)
制限はHTTP Cookieに関連しています。あなたのオプションは次の通りです:1)データベースに保存します。2)ユーザーは、redisのようなサーバー側のキャッシュシステムを使用します。データベースに固執するのは、通常、頭痛の種です。そのサイズのものであれば、あなたが選んだものは何でも素晴らしいパフォーマンスを得ることができます。 – abigperson