python - flask 服务器 : Using a data in the same session

标签 python python-3.x flask

我有一个使用 Flask 框架的 python 服务器。

我的应用程序是一个聊天机器人,它与用户对话并在用户提供的数据集中执行一些计算。

我已经能够将此数据上传到服务器,但是当我尝试使用该数据时,它不再加载。因此,我需要使用这些数据,直到用户与我的服务器断开连接。

阅读 Flask 文档,我发现了一些可以引导我找到我需要的信息。 The Application Context

我的方向正确吗?

这就是我在服务器中上传文件的方式:

@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
     # check if the post request has the file part
    if 'file' not in request.files:
        flash('No file part')
        return redirect(request.url)
    file = request.files['file']
    # if user does not select file, browser also
    # submit a empty part without filename
    if file.filename == '':
        flash('No selected file')
        return redirect(request.url)
    if file and allowed_file(file.filename):
        filename = secure_filename(file.filename)
        stream = io.StringIO(file.stream.read().decode("UTF8"), newline=None)
        csv_input = pd.read_csv(stream,sep=None,engine='python')
        file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
        session['receive_count'] = session.get('receive_count', 0) + 1
        return render_template('index.html', async_mode=socketio.async_mode)

return render_template('index.html', async_mode=socketio.async_mode)   

最佳答案

您的问题有多种解决方案。

首先,这里的 file 变量是 index() 函数的本地变量。如果您想使用在函数外部定义的变量(并且它不像 requestsession 那样导入),您需要使用 global 行启动该函数文件

我会将文件名存储在session中,然后在需要数据时再次读取该文件。这样,它将位于用户本地,并且您不会在内存中存储大量数据。另外,如果您使用 session.permanent = True,无论服务器和浏览器是否重新启动,它都会为该“用户”存储一个月。

编辑: 这个答案最初指出你可以使用 Flask g-object 来存储全局。但是,g 对象对于请求来说是本地的,即使它存在于应用程序上下文中。 (即存储在 g 对象上的数据无法跨请求访问,只能在同一请求内访问)

关于python - flask 服务器 : Using a data in the same session,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47693197/

相关文章:

heroku - 使用 Flask-Script 和 cron 作业

python - 如何从字符串python 3中提取日期?

python - ord ('q' ) 和 0xFF 的用法

python - 向构造函数传递太多参数是否被视为反模式?

python - 隐藏输入,仅显示输出(PYTHON),以及另一个小问题

python - 类型错误 : () got an unexpected keyword argument

python - matplotlib 字符串到日期

python - 使用 python 导入并绘制 csv 文件

python - 如何确保用户输入了数字?

python - flask 棉花糖 : how to mark all fields as optional only when the method is PUT