Задание python ubuntu upstart необходимо перезапустить

У меня есть скрипт Python, который я запускаю как выскочку Ubuntu. Я запускаю его из оболочки с помощью:

sudo service my-service-name start

В коде Python для самой службы в некоторых случаях мне нужно перезапустить службу. Вот как я это делаю:

import subprocess
import shlex
cmd = 'sudo service my-service-name restart'
subprocess.check_output(shlex.split(cmd), stderr=subprocess.STDOUT)

Если я запускаю cmd из оболочки, я могу успешно перезапустить свою выскочку. Если я запускаю его из самого задания, задание останавливается, но больше никогда не запускается.

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

Причина, по которой я перезапускаю задание, заключается в том, что я обновил базовый код Python на диске и хочу перезапустить задание, чтобы оно запускало новый код.


person nonagon    schedule 06.09.2014    source источник


Ответы (1)


Вы обновляете код приложения Python из приложения Python? Это не очень хорошая идея...

В любом случае, возможно, используя строфу возрождения в заданиях Upstart, установив обработчик сигнала для USR1 на обработчик для TERM, а затем отправив себе сигнал USR1 (или просто отправив себе сигнал TERM, но тогда вы не знаете, когда произойдет автоматическое возрождение). был для ваших специальных целей или нет).

person CameronNemo    schedule 11.09.2014