@bubaley

Django. Что лучше использовать вместе с nginx: daphne или gunicorn+uvicorn и как правильно использовать?

Здравствуйте, хочу как полагается развернуть django проект в production среде в docker. Но есть ряд вопросов, которые уже несколько дней меня терроризируют.

1. При использовании django-channels, что лучше использовать gunicorn+uvicorn или daphne?
- При использовании uvicorn я указываю workers для многопоточности. У daphne этого нет, для нее это не нужно или это должно использоваться как-то по другому?
- При развертке с помощью daphne не подгружаются картинки, потому что в django через daphne приходят http запросы (браузер начинает ругаться, в мобилке вообще не грузятся). В доке написано что необходимо указывать ssl серты, чтобы все завелось, но это все внутри докера, я не знаю как правильно туда пробросить (серты вне докера) и нужно ли это делать (в uvicorn можно просто указать --forwarded-allow-ips="*" и все становится ок).

2. Нужно ли отделять websocket приложение как asgi и обычный wsgi в разные контейнеры? На просторах интернета нашел пару примеров когда так делают, но не могу понять зачем, ведь в asgi файле, можно разбить их с помощью ProtocolTypeRouter.

3. Зачем запихивать внутрь контейнера nginx если на сервера все равно он должен стоять чтобы ловить входящие запросы. Получается цепочка nginx -> nginx -> asgi-сервер. Подумал, что можно смело избавиться от nginx в рамках контейнера. Тем более если на машине не 1 проект а парочку.

4. При работе в контейнерах нужно ли использовать .sock файл или можно напрямую проксировать запросы в контейнер с django на указанный порт? Зачем он вообще нужен?

Вопросов конечно много, но они очень важны для меня.
  • Вопрос задан
  • 1824 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
При использовании django-channels, что лучше использовать gunicorn+uvicorn или daphne?

Только daphne.

У daphne этого нет, для нее это не нужно или это должно использоваться как-то по другому?

Потому что она асинхронная.

При развертке с помощью daphne не подгружаются картинки, потому что в django через daphne приходят http запросы

Запросы к статике должен обрабатывать Nginx.

Зачем запихивать внутрь контейнера nginx

Незачем. В контейнере должно быть что-то одно, в этом их суть.

При работе в контейнерах нужно ли использовать .sock файл или можно напрямую проксировать запросы в контейнер с django на указанный порт? Зачем он вообще нужен?

Не нужно. Это unix-сокет.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы