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


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

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

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

Есть ли какие-либо ограничения для приема сигналов, например, рабочие не могут перезагрузить своего хозяина?

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

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)
1 7

1 ответ:

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

Процесс нереста из python