2013-01-30 21 views
22

Zaczynam gunicorn z komendą Django "python manage.py run_gunicorn". Jak mogę zatrzymać gunicorn?Jak zatrzymać gunicorn poprawnie

Uwaga: Mam półautomatyczne wdrożenie serwera z tkaniną. Zatem użycie czegoś takiego jak ps aux | grep gunicorn do ręcznego zabicia procesu przez pid nie jest opcją.

Odpowiedz

13

Jedną opcją byłoby użycie Supervisor do zarządzania Gunicornem.

Potem znowu nie rozumiem, dlaczego nie można zabić procesu przez Fabric. Zakładając, że pozwalasz Gunicornowi write a pid file, możesz łatwo odczytać ten plik w poleceniu Fabric.

Coś jak to powinno działać:

run("kill `cat /path/to/your/file/gunicorn.pid`") 
+0

+2 za sugestię przełożonego, -1 za sugestię tkaniny = +1. To, że możesz to zrobić z tkaniną, nie oznacza, że ​​powinieneś (biorąc pod uwagę "odpowiedni" wymóg). – rantanplan

+0

Co jest tak źle w rozwiązaniu Fabric? Widziałem kilka fabfiles ([jak ten] (https://github.com/jarus/fabric-gunicorn/blob/master/fabric_gunicorn.py#L94)), które używają tej metody. Lub 'kill -HUP', aby szybko uruchomić ponownie Gunicorn. Chociaż przede wszystkim wspomniałem o rozwiązaniu Fabric, miałem wrażenie, że OP oznacza, że ​​nie można zawijać polecenia typu 'kill' w * półautomatycznym wdrożeniu serwera z tkaniną *. – arie

+0

Używanie tkaniny jako czegoś więcej niż wdrażanie i ładowanie projektu jest ćwiczeniem daremności. Dlatego mamy skrypty i programy typu init, takie jak nadzorca. I mówię to jako ktoś, kto kocha tkaniny i używa go mocno. – rantanplan

41

Aby zobaczyć procesów jest ps ax|grep gunicorn i zatrzymać gunicorn_django jest pkill gunicorn.

+2

Jak już wspomniałem w moim pytaniu, nie jest to opcja (zautomatyzowane wdrożenie). – j7nn7k

+1

Szukałem tego wszędzie, wielkie dzięki. – idik

+0

po tym również, jeśli zrobisz "ps ax | grep gunicorn", możesz uruchomić jeden proces. czemu? –