【问题标题】:I can't upload multiple large files我无法上传多个大文件
【发布时间】:2021-02-05 23:46:18
【问题描述】:

我正在使用 Django、AWS S3 开发一个应用程序并托管在 Heroku 上。

在某一时刻,用户必须上传多个大文件,每次总计大约 150MB。 我尝试了各种方法。

第一次尝试:直接调用Django表单的save方法: 结果:请求耗时超过 30 秒并返回超时。

第二次尝试:暂时将文件保存到 Heroku 目录并从 Celery 任务中读取。 结果:无法保存,因为它抛出 FileNotFoundError: [Errno 2] No such file or directory on production。

第三次尝试:将上传的文件(在内存文件中)传递给 celery 任务,但字节不能被序列化,也不能使用 json 或 pickle 传递给任务。

谁能帮帮我? 提前谢谢。

【问题讨论】:

    标签: django amazon-s3 heroku serialization celery


    【解决方案1】:

    另一种方法可以是这样的

    1. 公开 API 以为前端 (Steps are here) 生成预签名 URL。
    2. 从前端使用该 URL 以异步方式上传文件。这将减轻您在后端的计算负担。
    3. 上传成功后,你会得到一个文件位置的URL。现在将 S3 URL 与其他字段数据一起保存到 Django 模型中。

    您可以通过此方法上传超过 150MB 的文件大小。您的系统将具有可扩展性。

    【讨论】:

      猜你喜欢
      • 2020-08-15
      • 2012-09-18
      • 2021-08-23
      • 2023-01-25
      • 2013-08-24
      • 2019-01-21
      • 2018-08-02
      相关资源
      最近更新 更多