首页 > 解决方案 > 让用户使用 Django 在服务器中下载大文件的最佳方式

问题描述

我正在为实验制作一个 Django 应用程序,它将为用户提供能够将非常大的图像文件下载到服务器中的特定目录的可能性。

我有一个 PoC 的工作,用户看到一个按钮点击它,下载过程开始。我已将下载过程放入views.py其中,这意味着它在访问指定的 URL 时发生。

负责下载部分的代码类似如下:

with open(loc, "wb") as f:
    response = s.get(pos, stream=True)
    total_length = response.headers.get('content-length')
    if total_length is None:
        f.write(response.content)
    else:
        dl = 0
        total_length = int(total_length)
        for data in response.iter_content(chunk_size=4096):
            dl += len(data)
            f.write(data)

问题在于,对于某些 > 500MB 的图像,该过程需要相当长的时间,并且存在几个问题,例如如果用户关闭应用程序,或者单击离开然后过程停止。

我怎样才能做到这一点,以便用户访问该页面并单击该按钮,并且下载过程在后台开始,而无需将用户绑定到该页面。

也可能创建另一个端点,可以更新用户关于下载过程的状态。

请随时分享任何想法或想法。

标签: djangodownloadbackground

解决方案


推荐阅读