Gunicorn :: перезагрузка из самого приложения

Недавно я создал страницу управления версиями из своего приложения для управления процессом развертывания.

(Да, я знаю, хуки github + лучше, чем переписывание с нуля. Но мы находимся в Иране, и наше любимое правительство заблокировало все ssh-соединения за пределами страны.: (()

На странице есть действие слияния + перезагрузки. слияние работает так же, как и другие части, но часть перезагрузки завершается неудачно без какого-либо сообщения. Я добавил строку sudo для команды kill, и у пользователя рабочего процесса достаточно прав. Я даже выполнил кодовую оболочку django, и она перезагрузила процесс.

Существуют ли какие-либо ограничения на прием сигналов, например, о невозможности выполнения работниками перезагрузки своего мастера?

Вот соответствующие коды:

def command(x):
    return str(Popen(x.split(' '), stdout=PIPE).communicate()[0])

pid = open(PATH + "/logs/gunicorn.pid").readline().strip()
cmd = "sudo kill -HUP %s" % pid
content += command(cmd)

person Reza Mohammadi    schedule 28.01.2012    source источник


Ответы (1)


Я догадываюсь, что перезапуск не работает, потому что процесс, вызывающий перезагрузку, был убит. Может быть, попытаться демонизировать подпроцесс, который завершается после вызова перезагрузки? Взгляните на этот пост:

процесс создания из python

person berto    schedule 13.02.2012