В настоящее время я работаю над личным проектом, который в основном контролирует некоторые вещи круглосуточно. Один - это процесс, который использует PhantomJS, а другой сканирует некоторые другие API и отправляет электронные письма, если возникает определенная ситуация.
Когда все запущено и работает, все работает именно так, как я хочу, но, к сожалению, в настоящее время каждые 2-3 дня что-то происходит обычно в глубокой ночи, и сканер API просто зависает. Он написан на Python и запускается каждые три секунды, и когда я проверяю журнал на следующий день, никаких сбоев нет, ничто не выглядит необычно, но по какой-то причине он перестает работать.
Когда у меня будет время, я в конце концов найду время, чтобы исправить это, но поскольку это происходит только один раз через 3 или 4 дня подряд, воспроизвести его было очень сложно.
Для материала PhantomJS ... время от времени это просто взрывается. Опять же, там будет происходить очистка, исправление этих проблем и, возможно, полная их замена.
Но, в то же время, что я хотел бы сделать, это перезапустить их каждые 24 часа в сутки. Это определенно не идеально, но то, что я сейчас делаю, решит 99% моих проблем.
В идеальном мире у меня был бы список процессов в сочетании со списком PID. Каждые 24 часа, в то время, когда я запретил, я хочу, чтобы этот контроллер проходил через каждый из PID, отправлял обычный сигнал уничтожения (один из них обращается к БД, поэтому я бы хотел, чтобы он благополучно закрылся, если возможно), затем подождите в течение запрещенного периода времени (скажем, 30 секунд), затем отправьте сигнал sudo kill -9
в PID для аварийных аварийных ситуаций, затем снова запустите команду запуска.
Я изучил, может быть, с помощью Supervisor
для этого, но не казалось (на первый взгляд), чтобы сделать то, что я ищу.
Я полностью согласен, возможно, использую 2-3 разные программы для этого (например, cron + supervisord + python) вместо того, чтобы искать одну, если не существует единственного идеального решения.