Django + Каналы + Дафна + Кэдди + Загрузка файла администратора = Ошибка 413
У меня есть веб-приложение Django, которое развернуто в производстве вместе с Caddy. Я использую Caddy в качестве обратного прокси-сервера, указывающего на daphne, которая указывает на мое приложение Django. Однако, когда я пытаюсь загрузить файл 5 МБ на административный портал django, я получаю ошибку 413. В режиме отладки, когда я просто использую Django (без caddy или daphne), я не получаю эту ошибку. У кого-нибудь есть идеи? Вот мой Caddyfile и связанные файлы:
0.0.0.0:2015
on startup daphne peptidedb.asgi:application &
header / {
-Server
# be sure to plan & test before enabling
# Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Referrer-Policy "same-origin"
X-XSS-Protection "1; mode=block"
X-Content-Type-Options "nosniff"
# customize for your app
#Content-Security-Policy "connect-src 'self'; default-src 'none'; font-src 'self'; form-action 'self'; frame-ancestors 'none'; img-src data: 'self'; object-src 'self'; style-src 'self'; script-src 'self';"
X-Frame-Options "DENY"
}
proxy / localhost:8000 {
transparent
websocket
except /static
}
limits 750000000
log / stdout "{combined}"
errors stdout
asgi.py
import os
from channels.routing import get_default_application
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "peptidedb.settings")
django.setup()
application = get_default_application()
wsgi.py
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "peptidedb.settings")
application = get_wsgi_application()
1 ответ
Похоже, когда приложение django развертывается с каналами, daphne и caddy, этот параметр вступает в силу в settings.py
DATA_UPLOAD_MAX_MEMORY_SIZE = ...
Мне пришлось добавить эту настройку в мой файл настроек, и тогда моя большая загрузка файла работает. Странная часть в том, что мне не нужен этот параметр, когда приложение было развернуто только с отладкой django. Интересно, не может ли мое приложение при запуске внутри контейнера докера (разрешение? Размер?) Записать / передать большой файл на диск, так как это обычное поведение django (вместо записи в память).