django - 我无法上传多个大文件
问题描述
我正在使用 Django、AWS S3 开发一个应用程序并托管在 Heroku 上。
在某一时刻,用户必须上传多个大文件,每次总计大约 150MB。我尝试了各种方法。
第一次尝试:直接调用Django表单的save方法: 结果:请求耗时30多秒,返回超时。
第二次尝试:暂时将文件保存到 Heroku 目录并从 Celery 任务中读取。结果:无法保存,因为它抛出 FileNotFoundError: [Errno 2] No such file or directory on production。
第三次尝试:将上传的文件(在内存文件中)传递给 celery 任务,但字节不能被序列化,也不能使用 json 或 pickle 传递给任务。
有人可以帮我吗?提前谢谢。
解决方案
另一种方法可以是这样
- 公开一个 API 来为前端生成预签名 URL(步骤在这里)。
- 以异步方式从前端使用该 URL 上传文件。这将在后端卸载您的计算。
- 上传成功后,你会得到一个文件位置的URL。现在将 S3 URL 与其他字段数据一起保存到 Django 模型。
您可以通过此方法上传超过 150MB 的文件大小。您的系统将是可扩展的。
推荐阅读
- elasticsearch - 默认情况下,在文本字段上禁用 Fielddata 设置 fielddata=true
- python - 使用 pyinstaller 时如何修复无效模块
- python - 由于形状不正确,无法在 Keras 中拟合数据
- css - 如何将搜索图标移动到标题的左侧和右侧的菜单
- bash - 除了移动到每个目录之外,是否有 git 或 bash 方式来提取多个 git 存储库?
- react-native - 下载开放街道地图的tiles.png
- kubernetes - 在没有 systemd 的 debian 拉伸服务器上安装 kubernetes
- gitlab - 如何增加本地 Gitlab 的最大工件大小
- apache-spark - 结构化流写入多个流
- python - 为什么字节文字符号不断出现?