413有效负载在Django服务器上太大

时间:2019-03-15 20:49:38

标签: django webserver http-status-code-413

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

我们无法精确确定可接受的最大文件大小-似乎在1-3MB范围内波动。

我们排除的事物:

  • 这不是网络服务器配置问题,因为我们正在运行
    本地Django服务器(无Web服务器)

  • 我们认为这不是应用服务器配置问题,因为这会在多个应用服务器(./manage.py runserverdaphne -p 8000 topknott.asgi:application

  • Django模型上的字段不是问题,看起来 正常:photo = models.ImageField(blank=True)

任何人都可以发现我们所缺少的吗?

3 个答案:

答案 0 :(得分:1)

如果您的团队正在/正在使用Django Channels,则2.1.7中引入了一段代码,导致意外的413错误(讨论了here)。但是,此问题已在2.3.0中修复。

答案 1 :(得分:0)

据我所知,runserver或daphne永远不会返回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/;
        }
    }

答案 2 :(得分:0)

Django具有内置机制,可防止任何可疑活动。

在您的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