Django 服务器上的 413 负载太大

413 Payload Too Large on Django server

每当我们尝试将大文件上传到 Django 后端时,我的团队都会遇到 413 错误:413 Payload too large

我们无法准确确定可接受的最大文件大小 - 它似乎在 1-3MB 范围内摇摆不定。

我们排除的东西:

谁能看出我们遗漏了什么?

据我所知,runserver 或 daphne 永远不会 return 413。看起来你在 python 服务器前面安装了 NGINX。

您可以在 nginx.conf

的服务器块中使用 client_max_body_size 更改限制
    server {
        client_max_body_size 20M;
        listen       80;
        server_name  localhost;
        location / {
            proxy_pass         http://127.0.0.1:8000/;
        }
    }

Django 有一个内置机制来防止任何可疑 activity。

在您的 settings.py 文件中设置变量

DATA_UPLOAD_MAX_MEMORY_SIZE = 10*1024*1024  # your size limit in bytes

查看文档:https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-DATA_UPLOAD_MAX_MEMORY_SIZE

但是,如果您的团队 was/is 使用 Django Channels, there was a piece of code introduced in 2.1.7 causing an unintended 413 error (discussed here). This was fixed in 2.3.0