Я решаю следующую проблему:Вызовите функцию момента до сбоя сценария?
У меня есть сценарий, который должен работать как служба 24/7. Поскольку это очень важно, я бы хотел, чтобы он отправил мне электронное письмо в случае его сбоя. Я нашел atexit модуль, но в документах говорится, что он не может справиться с авариями.
Итак, мой вопрос: есть ли лучший способ достичь этого, чем запустить другой serivce, который будет проверять, работает ли этот? Или цель здесь состоит в том, чтобы написать услугу, чтобы она не могла сбой (что почти невозможно)?
Спасибо за ваши идеи!
Как краш-у это крах? Мы говорим о необработанных исключениях здесь или что-то вроде segfault? Обработчики выходных данных atexit будут по-прежнему выполняться в случае необработанного исключения. – user2357112
Вы не можете справляться со всеми типами сбоев, так как некоторые из них являются «неучетными», как упомянуто segfault, или 'SIGTERM'. Вы можете использовать внешний инструмент, например [supervisor] (http://supervisord.org/index.html), который будет обрабатывать запуск/перезапуск для вас и использовать его [события] (http://supervisord.org/events .html), вы можете слушать, например, для процессов, входящих в состояние «FATAL», чтобы отправить электронное письмо. Вложение механизмов для мониторинга процесса в один и тот же процесс является рискованным. – Yakuza
Я посмотрю на инструмент супервизора, кажется, что это единственный правильный aproach. Спасибо – karlosss