【发布时间】:2017-10-16 05:16:44
【问题描述】:
我正在构建一个数据分析 Flask 应用程序,它需要大量用户输入,执行一些计算,然后将结果投影到各种网页。我正在使用 pandas Dataframe 来存储输入并执行计算。然后我将 DF 转换为字典并将其存储在会话对象中。
由于会话对象只能容纳约 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。坚持使用数据库通常不那么令人头疼。对于这种尺寸的东西,无论您选择什么,您都应该能够获得出色的性能。
标签: python session cookies flask