webentwicklung-frage-antwort-db.com.de

Wie kann ich Gunicorn richtig stoppen?

Ich beginne gunicorn mit dem Django-Befehl 'python manage.py run_gunicorn'. Wie kann ich Gunicorn aufhalten?

Hinweis: Ich habe eine halbautomatische Server-Bereitstellung mit Fabric. Die Verwendung von ps aux | grep gunicorn zum manuellen Abbruch des Prozesses durch pid ist daher keine Option. 

30
j7nn7k

Eine Option wäre die Verwendung von Supervisor , um Gunicorn zu verwalten.

Dann kann ich nicht verstehen, warum Sie den Prozess nicht über Fabric..__ beenden können. Angenommen, Sie lassen Gunicorn eine PID-Datei schreiben Sie könnten diese Datei leicht in einem Fabric-Befehl lesen. 

So etwas sollte funktionieren:

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

Um die Prozesse zu sehen, heißt ps ax|grep gunicorn und gunicorn_Django zu stoppen ist 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 ruft nur die Prozess-ID, den Befehl und die Argumente ab

grep -v grep, um Ausgaben wie 'grep --color = auto xxx' loszuwerden

sort | head -1 um aufsteigend zu sortieren und die erste Zeile zu erhalten

awk '{print $1}' um pid zurück zu bekommen

Eine weitere Sache, die Sie beachten müssen: Wo wird Gunicorn installiert und welches verwenden Sie?

Auf Ubuntu 16 ist standardmäßig gunicorn installiert. Die ausführbare Datei ist gunicorn3 und befindet sich unter/usr/bin/gunicorn3. Wenn Sie es per pip installieren, befindet es sich unter/usr/local/bin/gunicorn. Sie müssen which gunicorn und gunicorn -v verwenden, um dies herauszufinden.

0
delusionxb

pkill gunicorn stoppt alle Gunicorn-Daemons. Wenn Sie also mehrere Instanzen von gunicorn mit verschiedenen Ports ausführen, probieren Sie dieses Shell-Skript aus.

#!/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 zeigt die Daemons mit einem bestimmten Port.

0
TakaSoft