web-dev-qa-db-fra.com

Comment arrêter gunicorn correctement

Je lance 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. Donc, utiliser quelque chose comme ps aux | grep gunicorn pour tuer le processus manuellement par pid n'est pas une option. 

30
j7nn7k

Une option serait d'utiliser Supervisor pour gérer Gunicorn.

Encore une fois, je ne vois pas pourquoi vous ne pouvez pas tuer le processus via Fabric. En supposant que vous laissiez Gunicorn écrire un fichier pid vous pourriez facilement lire ce fichier dans une commande Fabric

Quelque chose comme ça devrait marcher:

run("kill `cat /path/to/your/file/gunicorn.pid`")
17
arie

Pour voir les processus est ps ax|grep gunicorn et arrêter gunicorn_Django est pkill gunicorn.

59
Voislav Sauca
kill -9 `ps -eo pid,command | grep 'gunicorn.*${moduleName:appName}' | grep -v grep | sort | head -1 | awk '{print $1}'`

ps -eo pid,command ne récupérera que l'identifiant de processus, la commande et les arguments

grep -v grep pour supprimer les sorties telles que 'grep --color = auto xxx'

sort | head -1 pour faire un tri croissant et obtenir la première ligne

awk '{print $1}' à récupérer

Une dernière chose à laquelle vous devrez peut-être faire attention: Où est installé gunicorn et lequel vous utilisez?

Gunicorn est installé par défaut dans Ubuntu 16, le fichier exécutable est gunicorn3 et se trouve dans/usr/bin/gunicorn3. S'il est installé par pip, il se trouve dans/usr/local/bin/gunicorn. Vous devrez utiliser which gunicorn et gunicorn -v pour le savoir.

0
delusionxb

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.

0
TakaSoft