python - 如何在 Django 中从 Cloud Run 下载大文件

标签 python django google-cloud-run

我在 Cloud Run 上有 Django 项目。当我从具有以下代码的页面下载小文件时。

def download_view(request,pk):
    file_path = f'media/{pk}.mp3'
    name = f'{pk}.mp3'
    with open(file_path, 'rb') as f:
        response = HttpResponse(f.read(), content_type='audio/wav')
    response['Content-Disposition'] = f'attachment; filename={name}'
    return response

它工作正常。但是,当我下载一个文件(50MB)时。我得到这张照片的错误。 enter image description here

Cloud run的log是这样的。我找不到任何回溯日志。

2021-05-06 12:00:35.668 JSTGET500606 B66 msChrome 72 https://***/download/mp3/2500762/
2021-05-06 11:49:49.037 JSTGET500606 B61 msChrome 72 https://***/download/mp3/2500645/

我不确定。此错误是否与下载错误有关。

2021-05-06 16:48:32.570 JSTResponse size was too large. Please consider reducing response size.

我认为这是上传文件大小错误。所以这与下载错误的主题无关。

当我在本地运行 Django 时,然后下载相同的 50MB 文件。我可以下载它。我认为这个下载错误与 Cloud run 有关。它在请求/响应后停止。所以我认为这个错误是由 Cloud Run 引起的。当我还在下载文件时,它已停止。

我不知道如何解决这个下载错误。如果您有任何解决方案,请帮助我!

最佳答案

Cloud Run HTTP 请求/响应大小为 limited to 32Mb .使用 multipart/form-data 发送大文件的 block ,而不是直接发送整个文件。

关于python - 如何在 Django 中从 Cloud Run 下载大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67414807/

相关文章:

python - 响应不为空时,scrapy xpath 返回空列表

python - 共享一个 :memory: database between different threads in python using sqlite3 package

python - 如何编写装饰器并返回经过身份验证的对象

reactjs - 在 Nextjs 应用程序中使用 Cloud Run 环境变量

Python Apache Beam 管道状态 API 调用

python - Heroku 应用程序 : ModuleNotFoundError: No module named 'pwa'

Django contenttypes如何获取外键值

javascript - 使用 javascript 刷新 django 子模板 - 仅重新加载页面的一部分

google-cloud-platform - Cloud Run 错误 : Internal system error. 缺少必要的权限

google-cloud-platform - 云运行错误: VPC connector "connector" is not ready yet or does not exist