В настоящее время я работаю над личным проектом, который в основном контролирует несколько вещей круглосуточно. Один - это процесс, который использует 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) вместо того, чтобы искать одну, если не существует единственного идеального решения.
or
общего времени выполнения" ... В зависимости от того, что удобнее.current
время выполнения», которое, в любом случае, может подразумеваться, но все же имеет смысл. Я уже записываю текущее и общее время, так что это определенно полезно, чтобы проверить, есть ли корреляция.