2013-01-30 8 views
22

Я запускаю gunicorn с командой Django 'python manage.py run_gunicorn'. Как я могу остановить стрельбу?Как правильно остановить стрельбу

Примечание: У меня есть полуавтоматизированное развертывание сервера с использованием ткани. Таким образом, использование чего-то вроде ps aux | grep gunicorn, чтобы убить процесс вручную с помощью pid, не является вариантом.

ответ

13

Одним из вариантов было бы использовать Supervisor для управления Gunicorn.

Затем я не понимаю, почему вы не можете убить процесс через Fabric. Предполагая, что вы допустили Gunicorn write a pid file, вы можете легко прочитать этот файл в команде Fabric.

Что-то, как это должно работать:

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

+2 для предложения супервизора, -1 для предложения ткани = +1. То, что вы можете сделать это с помощью ткани, не означает, что вы должны (с учетом «правильного» требования). – rantanplan

+0

Так что же плохого в решении Fabric? Я видел несколько fabfiles ([как это] (https://github.com/jarus/fabric-gunicorn/blob/master/fabric_gunicorn.py#L94)), которые используют этот метод. Или 'kill -HUP', чтобы быстро перезапустить Gunicorn. Хотя я в первую очередь упомянул решение Fabric, так как у меня создалось впечатление, что OP указал, что вы не можете завершать команду, например 'kill', в * полуавтоматическом развертывании сервера с помощью *. – arie

+0

Использование ткани как нечто большее, чем развертывание и самонастройка вашего проекта - это бесполезное упражнение. Вот почему у нас есть сценарии и программы init, такие как supervisor. И я говорю это как человека, который любит ткань и сильно ее использует. – rantanplan

41

Чтобы увидеть процессы является ps ax|grep gunicorn и остановить gunicorn_django является pkill gunicorn.

+2

Как я уже упоминал в своем вопросе, это не вариант (автоматическое развертывание). – j7nn7k

+1

Искал это повсюду, спасибо большое. – idik

+0

после этого также, если вы делаете «ps ax | grep gunicorn», вы можете запустить один процесс. Зачем? –