Python 烧瓶:会话最大大小太小

Python 烧瓶:会话最大大小太小,python,session,cookies,flask,Python,Session,Cookies,Flask,我正在构建一个数据分析烧瓶应用程序,它需要大量用户输入,执行一些计算,然后将结果投影到各个网页。我使用熊猫数据框来存储输入并执行计算。然后我将DF转换为字典,并将其存储在会话对象中 由于会话对象只能容纳~4k字节,我遇到了问题。有几页读取了数据,因此我需要一种方法将大量数据(~5k-50k)从一个请求传递到另一个请求(会话对象可以很好地执行此操作,但内存较小) 我可以为会话对象设置更高的存储限制吗(我想我不能,因为4k是cookie的限制,而会话对象是cookie)?或者我应该在这里做些什么(将

我正在构建一个数据分析烧瓶应用程序,它需要大量用户输入,执行一些计算,然后将结果投影到各个网页。我使用熊猫数据框来存储输入并执行计算。然后我将DF转换为字典,并将其存储在会话对象中

由于会话对象只能容纳~4k字节,我遇到了问题。有几页读取了数据,因此我需要一种方法将大量数据(~5k-50k)从一个请求传递到另一个请求(会话对象可以很好地执行此操作,但内存较小)

我可以为会话对象设置更高的存储限制吗(我想我不能,因为4k是cookie的限制,而会话对象是cookie)?或者我应该在这里做些什么(将dict存储在数据库中,等等)

编辑:

我认为一个可行的替代方案是从数据库中获取数据(在我的例子中是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)

是的,这听起来像是服务器端会话的一个案例。
对于最流行的数据库,有很多种方法

迁移到它们应该不难,因为它们使用与cookie会话系统相同的
SessionMixin
接口

一个更简单的方法可能是使用,它声称

与Flask的集成是无缝的,一旦为Flask应用程序加载了扩展,它就会透明地替换Flask自己的会话管理。任何使用会话的应用程序都应该使用相同的会话


该限制与HTTP Cookie有关。您的选项是:1)存储在数据库中2)使用像redis这样的服务器端缓存系统。坚持使用数据库通常不那么令人头痛。对于这种尺寸的产品,无论您选择什么,您都应该能够获得出色的性能。谢谢!我还发现这有助于服务器端会话。我还有一个问题,请看上面的编辑。看起来不错。我的意思是数据发送到jinja模板引擎时不会被复制,只是对同一块内存的引用。那么问题是——50kb对于HTML页面来说是否太大了?不,我觉得很好。另一种方法是通过API端点提供json,并让页面动态加载它,但这在这里可能不是必需的。听起来不错。知道有多少数据对于HTML页面来说太多了吗?不完全确定,但我假设这是受服务器内存限制的。在浏览器端,当发送超过4MB的JSON时,似乎会出现延迟-请参阅