Django: Разница между использованием сервера через manage.py и другими серверами, такими как gunicorn и т.д. Что лучше?

Я сделал начальные проекты, используя manage.py, и теперь перешел в postgres после sqllite. Многие предложили пушки? В чем разница?

Ответ 1

Самые популярные настройки - nginx и gunicorn. Итак, прежде чем говорить о том, почему gunicorn рекомендуется вместо runserver, давайте быстро выясним разницу между nginx - потому что оба утверждают, что они веб-серверы :)

NGINX должен быть вашей точкой доступа к публике, это сервер, слушающий порты 80 (http) и 443 (https). Основной причиной является обработка HTTP-запросов, то есть применение перенаправлений, HTTP-аутентификация при необходимости, управление сертификатами TSL/SSL и, среди прочего, определение того, куда в конечном итоге направляются ваши запросы. Например. может быть, есть приложение node.js, живущее на localhost:3000, которое ожидает запросов на /foo/api, в то время как gunicorn ждет на localhost:8000, чтобы обслуживать ваше удивительное приложение. Эта функция передачи входящих запросов так называемым сервисам upstream (в данном случае node.js и gunicorn) называется обратным прокси-сервером.

GUNICORN - это сервер, который переводит HTTP-запросы в python. Есть спецификации для этого под названием WSGI. Например. текстовые части заголовков http преобразуются в доступные ключи значения ключа.

Сборка Django в веб-сервере делает то же самое. manage.py runserver предназначен для разработки (например, путем автоматического перезапуска изменений). Gunicorn нацелен на производство. У этого есть много особенностей, в которых отсутствует встроенный сервер. Например. он может порождать несколько рабочих процессов для распараллеливания входящих запросов на несколько ядер процессора, имеет правильное ведение журнала, обычно оптимизируется для скорости, может быть настроен на очень хорошие оценки в зависимости от ваших настроек и очень активно проверяется на наличие проблем безопасности.

Есть и другие веб-серверы, конкурирующие с gunicorn, но gunicorn (первоначально вдохновленный ruic unicorn) очень популярен и прост в настройке и, следовательно, не только очень хорошая отправная точка, но и очень профессиональное решение, которое используется в очень крупных проектах.

Ответ 2

manage.py runningerver - это только сервер разработки, он не предназначен для производства ни при каких обстоятельствах. Вам нужно использовать что-то вроде Apache, uWSGI, NGINX или какого-либо другого сервера, чтобы служить вашему проекту django после его готовности к развертыванию.