Как перезапустить сценарий Python после одной секунды потери работоспособности по ВЫСКОЧКЕ использования?

Это означает "систему опроса". Это проверяет ячейку памяти в ожидании некоторых данных, которые могли бы быть там. Когда это не находит его, это спит и попробовало еще раз позже.

Я не могу больше говорить, чем, что от того, что Вы включали.

2
25.01.2014, 19:05
4 ответа

Это полностью не тестируется, но это слишком сложно для вписываний в комментарий, так надо надеяться, это работает.

Вы смогли добавлять a post-stop строка файла конфигурации, которая сделает то, что Вы хотите. Что-то, такое как:

post-stop script
  [ "$RESULT" == "failed" ] && sleep 1
end script

(существует также a $EXIT_STATUS можно использовать),

Поскольку документация видит новомодную постостановку разделов поваренной книги и переменные среды.

Поваренная книга даже имеет раздел по "переикре задержки задания", но я думаю, что документация может быть неправильной. Это говорит, что только задержится с ненулевым кодом выхода, но нет ничего проверяющего код выхода в их пример, таким образом, это работало бы безусловно, который не является тем, что Вы хотите.

1
27.01.2020, 22:13
  • 1
    Под 12.04's выскочка, нет, к сожалению, никаких переменных среды, которые дифференцируют ручную остановку от уничтоженной остановки. –  Willem 30.09.2015, 16:00

Вам нужно будет добавить строку:

post-stop exec sleep 1

Это, к сожалению, приводит к тому, что остановка всегда выполняется на секунду дольше, но это единственное решение (переменная RESULT предназначена только для события, а не для секций exec; она не будет доступна, как показывает Патрик).

Редактировать: ох ох, я кое-что понял. Вы можете создать новое задание, скажем, testing-wait-respawn, со следующим содержимым, чтобы получать его только в случае сбоя задания:

start on stopping testing RESULT=failed

task

exec sleep 1
0
27.01.2020, 22:13

Вы можете использовать следующий пост-стоп скрипт для сна только перед respawn работы (без сна, когда просто "стоп" или "перезагрузка"):

post-stop script
  # Change value of STIME to your number of seconds:
  STIME=15
  initctl status $UPSTART_JOB |grep 'start/post-stop' >/dev/null && ( echo -n `date`; echo ": Going to sleep of $STIME seconds before respawn..."; sleep $STIME ) || true
end script

Это работает правильно для меня.

1
27.01.2020, 22:13

Хорошая документация по upstart на ubuntu.com: задержка выполнения задания

respawn
exec mydaemon
post-stop exec sleep 1
0
27.01.2020, 22:13

Теги

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