Автокоррекция пушки с изменением источника

Наконец, я перенес свою разработку env с сервера-сервера на gunicorn/nginx.

Было бы удобно реплицировать функцию автозагрузки запускающего сервера на gunicorn, поэтому сервер автоматически перезагружается при изменении источника. В противном случае я должен перезапустить сервер вручную с помощью kill -HUP.

Как избежать ручного перезапуска?

Ответ 1

Хотя это старый вопрос, просто для согласованности - начиная с версии 19.0 gunicorn имеет параметр --reload. Поэтому никакие сторонние инструменты не нуждались в большем количестве.

Ответ 2

Один из вариантов заключается в использовании - max-запросов, чтобы ограничить каждый порожденный процесс обслуживанием только одного запроса, добавив --max-requests 1 в параметры запуска. Каждый вновь созданный процесс должен видеть изменения вашего кода, а в среде разработки дополнительное время запуска для каждого запроса должно быть незначительным.

Ответ 3

Брайан Хельмиг придумал это, и я изменил его, чтобы использовать run_gunicorn вместо запуска gunicorn напрямую, чтобы можно было просто вырезать и вставить эти 3 команды в оболочку в вашей корневой папке проекта django (с активированной функцией virtualenv):

pip install watchdog -U
watchmedo shell-command --patterns="*.py;*.html;*.css;*.js" --recursive --command='echo "${watch_src_path}" && kill -HUP `cat gunicorn.pid`' . &
python manage.py run_gunicorn 127.0.0.1:80 --pid=gunicorn.pid

Ответ 4

На производственных серверах нет автозагрузки из-за проблем с производительностью.

Я предполагаю, что вы не должны использовать его в рабочей среде, кроме случаев, когда это может быть для небольших страниц или для внутреннего использования, где сервер разработки будет работать нормально.

В рабочей среде вы можете использовать сценарии развертывания (например, ткань или capistrano) для загрузки кода и перезапуска сервера для вас.