我正在構建一個數據分析Flask應用程序,它需要大量用戶輸入,執行一些計算,然後將結果投影到各種網頁。我使用熊貓數據框來存儲輸入並執行計算。然後我將DF轉換爲字典並將其存儲在會話對象中。Flask:session max size too
我遇到問題,因爲會話對象只能容納〜4k字節。多個頁面讀取數據,所以我需要一種方法將大量數據(〜5k-50k)從一個請求傳遞到另一個(會話對象完美但是對於較小的內存大小)。
我可以爲會話對象設置更高的存儲限制嗎(我想我不能這麼做,因爲4k是cookie的限制,會話對象是cookie)?或者還有什麼我應該在這裏做的(將字典存儲在數據庫中等)?
編輯:
我想一個可行的替代辦法是抓住從數據庫(在我的情況的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