Python Flask/Dash CSV/Excel文件下载/输出对于不同实例中的每个用户来说不是唯一的

Python Flask/Dash CSV/Excel文件下载/输出对于不同实例中的每个用户来说不是唯一的,python,python-3.x,flask,plotly-dash,Python,Python 3.x,Flask,Plotly Dash,目前,我有一个仪表板,允许用户以xlsx/csv格式导出查询的数据,但生成的文件中包含第一个用户首先查询的数据。如果另一个用户查询他/她自己的数据并尝试导出,他/她将打开下载的文件,并在另一个实例中查看第一个用户查询的数据 我相信这是由于下面我的代码片段中显示了全局变量“queryd_df”。是否有更好的方法将回调中的数据共享/发送到服务器路由导出 任何其他建议都将不胜感激,谢谢 @app.callback( Output('tables', 'children'), [Inpu

目前,我有一个仪表板,允许用户以xlsx/csv格式导出查询的数据,但生成的文件中包含第一个用户首先查询的数据。如果另一个用户查询他/她自己的数据并尝试导出,他/她将打开下载的文件,并在另一个实例中查看第一个用户查询的数据

我相信这是由于下面我的代码片段中显示了全局变量“queryd_df”。是否有更好的方法将回调中的数据共享/发送到服务器路由导出

任何其他建议都将不胜感激,谢谢

@app.callback(
    Output('tables', 'children'),
    [Input("bom_1", "value"),
     Input("bom_2", "value"),
     Input("org_1", "value"),
     Input("org_2", "value"),
     Input("level", "value"),
     Input('button', 'n_clicks')]
)
def update_tables(bom_1, bom_2, org_1, org_2, level, n_clicks):

    global queried_df

    if n_clicks == 0:
        return dash.no_update

    queried_df = bc.compare(bom_1, org_1, bom_2, org_2, level)

    # perform other actions

    return table


@app.server.route('/export/')
def download_excel():
    strIO = io.BytesIO()
    writer = pd.ExcelWriter(strIO, engine="xlsxwriter")
    left = queried_df[0]
    left.to_excel(writer, sheet_name='Sheet1', startrow=1)

    excel_data = strIO.getvalue()
    strIO.seek(0)

    return send_file(strIO, attachment_filename='test.xlsx', as_attachment=True)

保持用户之间的独立性是flask会话可以帮助的事情。尝试:

来自烧瓶导入会话

并在此处阅读文档:

结果是,
发送文件()
会发送缓存中的文件。指定
cache\u timeout=0
会告诉它保持0秒。因此,解决办法是:

return send_file(filename, as_attachment=True, cache_timeout=0)
以下是原始解决方案:


谢谢您的评论。然而,对于我的用例来说,运行会话是不必要的。