我正准备部署我的第一个Flask应用程序。它现在在本地运行,但需要为多个同时的用户场景做好准备。下面是代码的完整部分(这是一个蓝图),显示了我正在尝试的方法
这里发生的是用户读取数据文件,该文件临时存储在临时目录中。我想要做的是部署时,创建一个临时目录,该目录对于每个新的浏览器会话都是唯一的。然后,同样的过程也会发生(上传文件,将该文件保存在temp中,等等)
如果发生这种情况,我认为用户不会发生冲突。下面我尝试使用一个会话变量,但这是正确的方法吗?有没有更好的规范化方法的建议
from flask import Flask, render_template, request, session, Blueprint
from flask_session import Session
import numpy as np
from scipy.stats import binom, norm
from scipy.optimize import minimize
from scipy import optimize
import pandas as pd
import os
import tempfile
import Datatools.code as dt
from Datatools.forms import dtFormRadio
from werkzeug.utils import secure_filename
data_tools = Blueprint("data_tools", __name__)
@data_tools.route('/dataTools', methods=['POST', 'GET'])
def data_tools_upload():
session["SESSION_FILE_DIR"] = tempfile.gettempdir() ### Just a test
table = '<table></table>'
result = '<table></table>'
message = ''
var2use = None
vars = ''
dt_name = ''
dtRadios = dtFormRadio(request.form)
if request.method == 'POST':
tmp_filename = session["SESSION_FILE_DIR"] +'\\input.csv' ### Just a test
if request.files:
to_upload = request.files.get('file')
dt_name = str(to_upload).split()[1]
if to_upload:
f = request.files['file']
f.save(tmp_filename)
if os.path.exists(tmp_filename):
orig_df = pd.read_csv(tmp_filename)
vars = list(orig_df.columns)
dtRadios.varlist.choices = vars
var2use = dtRadios.varlist.data
if var2use != None:
indx = vars.index(var2use)
if dtRadios.dtRadioList.data == 'descriptives':
result = dt.get_descriptives(orig_df[vars[indx]])
if dtRadios.dtRadioList.data == 'percentiles':
result = dt.get_percentiles(orig_df[vars[indx]])
if dtRadios.dtRadioList.data == 'frequency':
if dtRadios.binSize.data != None:
bins = dtRadios.binSize.data
result = dt.get_frequency(orig_df[vars[indx]], bins = bins)
result = pd.DataFrame.from_dict(result, orient='index', columns = [var2use]).to_html(classes='table table-striped table-hover', header = "true", justify = "center")
dims = orig_df.shape
message = 'Data file %s with %s rows and %s columns loaded.' % (dt_name, dims[0],dims[1])
table = orig_df.head(10).to_html(classes='data', header = "true")
return render_template('dataTools.html', results = [result], message = message, vars = vars, var_name = var2use, dtForm=dtRadios)
目前没有回答
相关问题 更多 >
编程相关推荐