使用python flask上载大型csv文件的最佳方法

使用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

要求:使用flask框架上载文件。一旦上传到服务器,用户应该能够在UI中看到文件

当前代码:为了满足上述要求,我编写了上载足够大的文件的代码,并且可以很好地处理(~30MB的文件,是的,当然没有那么快)。但当我试图上传(~100MB)文件时,它花费的时间太长,而且这个过程永远不会完成

这就是我目前正在做的:

上传文件夹='/tmp'

    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也可能有一个默认设置,如果这是您正在使用的,则会给您带来麻烦。如果不了解更多关于堆栈的信息,以及您得到的错误和日志显示的内容,就很难判断