Как перезапустить скрипт Python после одной секунды отключения с помощью UPSTART?

Я запускаю свой скрипт Python, используя функцию upstart Ubuntu, так что если по какой-либо причине мой скрипт Python умирает или убивается, его можно автоматически перезапустить, и все работает нормально -

Поэтому я решил использовать UPSTART особенность Ubuntu для автоматического перезапуска скрипта Python.

После создания файла testing.conf, подобного этому, в /etc/init/testing.conf -

start on runlevel [2345]
stop on runlevel [016]

chdir /tekooz
exec python testing.py
respawn

я запустил команду sudo, чтобы запустить ее, и я вижу, что процесс работает с использованием ps ax, и мой скрипт на python также работает нормально.

root@bx13:/tekooz# sudo start testing
testing start/running, process 27794

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

Есть ли возможность перезапустить мой скрипт на python через 1 секунду, если он вышел из строя или был убит? Я не хочу перезапускать немедленно.

1
задан 07.05.2020, 05:19

1 ответ

Я не совсем понимаю, почему вы используете корневой каталог для этого «теста», и я не думаю, что это именно то, что вы хотите сделать (вы можете в итоге сломать вашу систему). Также обратите внимание, что если вы являетесь пользователем root (подсказка #), вам не нужно "sudo". Пожалуйста, рассмотрите возможность редактирования вопроса, чтобы отразить то, чего вы пытаетесь достичь.

Я повторю для полноты картины:

Подумайте над тем, чтобы поместить файл conf в ~/.config/upstart/, чтобы вам не нужно было sudo: вы бы использовали initctl start testing для запуска скрипт например. (Я предполагаю, что ваш conf-файл не нуждается в привилегиях суперпользователя.)

При чтении поваренной книги говорится, что pre-start, post-start и post-stop строфы перезапускаются на возрожденной работе. Это означает, что вы можете сделать что-то вроде этого:

start on runlevel [2345]
stop on runlevel [016]

chdir /path/to/a/folder
respawn

exec python testing.py

post-stop script
  sleep 1
end script

Таким образом, перед повторным вызовом сценария будет задержка в 1 секунду. (Вы можете сделать то же самое со строфой pre-start, таким образом, первый вызов будет иметь задержку в 1 секунду.)

0
ответ дан 07.05.2020, 05:20

Теги

Похожие вопросы