使用python flask上载大型csv文件的最佳方法
要求:使用flask框架上载文件。一旦上传到服务器,用户应该能够在UI中看到文件 当前代码:为了满足上述要求,我编写了上载足够大的文件的代码,并且可以很好地处理(~30MB的文件,是的,当然没有那么快)。但当我试图上传(~100MB)文件时,它花费的时间太长,而且这个过程永远不会完成 这就是我目前正在做的: 上传文件夹='/tmp'使用python flask上载大型csv文件的最佳方法,python,csv,flask,large-files,Python,Csv,Flask,Large Files,要求:使用flask框架上载文件。一旦上传到服务器,用户应该能够在UI中看到文件 当前代码:为了满足上述要求,我编写了上载足够大的文件的代码,并且可以很好地处理(~30MB的文件,是的,当然没有那么快)。但当我试图上传(~100MB)文件时,它花费的时间太长,而且这个过程永远不会完成 这就是我目前正在做的: 上传文件夹='/tmp' file = request.files['filename'] description = request.form['desc'] f
file = request.files['filename']
description = request.form['desc']
filename = secure_filename(file.filename)
try:
file.save(os.path.join(UPLOAD_FOLDER, filename))
filepath = os.path.join(UPLOAD_FOLDER, filename)
except Exception as e:
return e
data = None
try:
with open(filepath) as file:
data = file.read()
except Exception as e:
log.exception(e)
所以我要做的是首先将文件保存到服务器中的临时位置,然后读取数据并将其放入数据库。我想这就是我正在努力的地方,我不确定什么是最好的方法
我是否应该从用户那里获取输入并返回成功消息(显然用户将无法立即访问该文件),并使用某种队列系统将数据放入数据库作为后台过程。或者还应该做些什么来优化代码。在烧瓶侧,确保最大含量长度配置值设置得足够高:
app.config['MAX_CONTENT_LENGTH'] = 100 * 1024 * 1024 # 100MB limit
此外,您可能还想调查
还有另一个与此类似的SO帖子:
除此之外,你的问题可能是线路上某个地方的超时。堆栈的其余部分是什么样子的?阿帕奇?Nginx和Gunicorn?您是否收到连接重置错误、连接超时
错误,还是挂起
如果您使用的是Nginx,请尝试将
proxy\u read\u timeout
设置为足以完成上载的值。Apache也可能有一个默认设置,如果这是您正在使用的,则会给您带来麻烦。如果不了解更多关于堆栈的信息,以及您得到的错误和日志显示的内容,就很难判断 在烧瓶侧,确保最大含量长度配置值设置得足够高:
app.config['MAX_CONTENT_LENGTH'] = 100 * 1024 * 1024 # 100MB limit
此外,您可能还想调查
还有另一个与此类似的SO帖子:
除此之外,你的问题可能是线路上某个地方的超时。堆栈的其余部分是什么样子的?阿帕奇?Nginx和Gunicorn?您是否收到连接重置错误、连接超时
错误,还是挂起
如果您使用的是Nginx,请尝试将proxy\u read\u timeout
设置为足以完成上载的值。Apache也可能有一个默认设置,如果这是您正在使用的,则会给您带来麻烦。如果不了解更多关于堆栈的信息,以及您得到的错误和日志显示的内容,就很难判断