413 Слишком большая полезная нагрузка на сервере Django - PullRequest
4 голосов
/ 15 марта 2019

Моя команда получала 413 ошибок всякий раз, когда мы пытались загрузить большие файлы в нашу серверную часть Django: 413 Payload too large

Мы не можем точно определить максимально допустимый размер файла - кажется, колеблетсяв диапазоне 1-3 МБ.

Вещи, которые мы исключили:

  • Это не проблема конфигурации веб-сервера, поскольку мы запускаем сервер
    Django локально (без веб-сервера)

  • Мы считаем, что это не проблема конфигурации сервера приложений, поскольку это происходит на нескольких серверах приложений (./manage.py runserver и daphne -p 8000 topknott.asgi:application)

  • Это не проблема с полем на модели Django, которое выглядит нормально: photo = models.ImageField(blank=True)

Может кто-нибудь определить, что нам не хватает?

Ответы [ 2 ]

5 голосов
/ 28 мая 2019

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

0 голосов
/ 16 марта 2019

Насколько я знаю, runserver или daphne никогда не вернут 413. Похоже, у вас есть NGINX перед сервером python.

Вы можете изменить лимит с помощью client_max_body_size в блоке сервера в nginx.conf

    server {
        client_max_body_size 20M;
        listen       80;
        server_name  localhost;
        location / {
            proxy_pass         http://127.0.0.1:8000/;
        }
    }
...