Comment arrêter gunicorn correctement
Je démarre gunicorn avec la commande Django 'python manage.py run_gunicorn'. Comment puis-je arrêter gunicorn?
Remarque: j'ai un déploiement de serveur semi-automatisé avec fabric. Ainsi, utiliser quelque chose comme ps aux | grep gunicorn pour tuer le processus manuellement par pid n'est pas une option.
4 réponses
Une option serait d'utiliser Supervisor pour gérer Gunicorn.
Là encore, Je ne vois pas pourquoi vous ne pouvez pas tuer le processus via Fabric.
En supposant que vous laissez Gunicorn écrire un fichier pid vous pouvez facilement lire ce fichier dans un Fabric commande.
Quelque chose comme ça devrait fonctionner:
run("kill `cat /path/to/your/file/gunicorn.pid`")
Pour voir le processus est ps ax|grep gunicorn et pour arrêter gunicorn_django est pkill gunicorn.
kill -9 `ps -eo pid,command | grep 'gunicorn.*${moduleName:appName}' | grep -v grep | sort | head -1 | awk '{print $1}'`
ps -eo pid,command récupère uniquement l'id de processus, la commande et les arguments
grep -v grep pour se débarrasser de la sortie comme 'grep --color = Auto xxx'
sort | head -1 pour faire un tri croissant et obtenir la première ligne
awk '{print $1}' pour récupérer pid
Encore une chose à laquelle vous devrez peut-être faire attention: où gunicorn est installé et lequel vous utilisez?
Ubuntu 16 A gunicorn installé par défaut, l'exécutable est gunicorn3 et situé sur / usr / bin / gunicorn3, et si vous l'avez installé par pip, c'est situé sur / usr / local / bin / gunicorn. Vous devez utiliser which gunicorn et gunicorn -v pour le savoir.
pkill gunicorn arrête tous les démons gunicorn. Donc, si vous exécutez plusieurs instances de gunicorn avec différents ports, essayez ce script shell.
#!/bin/bash
Port=5000
pid=`ps ax | grep gunicorn | grep $Port | awk '{split($0,a," "); print a[1]}' | head -n 1`
if [ -z "$pid" ]; then
echo "no gunicorn deamon on port $Port"
else
kill $pid
echo "killed gunicorn deamon on port $Port"
fi
ps ax | grep gunicorn | grep $Port affiche les démons avec un port spécifique.