Finalmente, migré mi entorno de desarrollo de runserver a gunicorn / nginx.
Sería conveniente replicar la función de recarga automática de runserver en gunicorn, para que el servidor se reinicie automáticamente cuando cambie la fuente. De lo contrario, tengo que reiniciar el servidor manualmente con kill -HUP.
¿Alguna forma de evitar el reinicio manual?

kill -HUPprocesaría el PID, sino que usaría supervisorctl. Sin embargo, no creo que esto cambie mucho.Respuestas:
Si bien esta es una pregunta antigua, solo por coherencia, ya que la versión 19.0 gunicorn tiene la
--reloadopción. Así que no se necesitan más herramientas de terceros.fuente
killall -HUP procnamefuncionará bien) para que se inicien nuevos trabajadores y se apaguen los antiguos.Una opción sería usar --max-request para limitar cada proceso generado a atender solo una solicitud agregando
--max-requests 1opciones de inicio. Cada proceso recién generado debería ver cambios en su código y, en un entorno de desarrollo, el tiempo de inicio adicional por solicitud debería ser insignificante.fuente
pippaquete de poder,watchdog.A Bryan Helmig se le ocurrió esto y lo modifiqué para usarlo en
run_gunicornlugar de iniciarlogunicorndirectamente, para que sea posible simplemente cortar y pegar estos 3 comandos en un shell en la carpeta raíz de su proyecto django (con su virtualenv activado):fuente
127.0.0.1:80, si es necesario.settings.py,models.py(se requiere migración) o el código fuente de alguna aplicación externa que no está en miswatchmedopatrones.Utilizo git push para implementar en producción y configuro git hooks para ejecutar un script. La ventaja de este enfoque es que también puede realizar la migración y la instalación del paquete al mismo tiempo. https://mikeeverhart.net/2013/01/using-git-to-deploy-code/
Luego crea un guión
/home/git/project_name.git/hooks/post-receive.Asegúrese de hacerlo
chmod u+x post-receivey agregue usuarios a los sudoers. Permita que se ejecutesudo supervisorctlsin contraseña. https://www.cyberciti.biz/faq/linux-unix-running-sudo-command-without-a-password/Desde mi servidor local / de desarrollo, configuro
git remoteque me permite enviar al servidor de producciónComo beneficio adicional, podrá ver todas las indicaciones mientras se ejecuta el script. Entonces verá si hay algún problema con la migración / instalación del paquete / reinicio del supervisor.
fuente
#!/bin/bashcomo se indicó anteriormente en lugar de#!/bin/shlo quepost-receivetenía el ejemplo de Git !