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.