Возможно, это широкий вопрос, но я не нашел ответа в другом месте, так что здесь.
Сценарий Python, который я пишу, должен постоянно запускаться (в идеальном мире, я понимаю, что это не совсем возможно) на развернутом устройстве. Я уже посвятил время добавлению операторов try ... Кроме того, чтобы в случае возникновения проблемы сценарий восстанавливался и продолжал работать.
Проблема в том, что я не уверен, что могу (и не должен) обрабатывать каждое возможное исключение, которое может быть сгенерировано. Поэтому я решил, что может быть лучше позволить скрипту умереть и использовать systemd для его перезапуска.
Три варианта:
- Не пытаться обработать какое-либо исключение и просто позволить systemd перезапустить его, когда оно умрет.
- Тщательно создавая обработчики для каждого возможного исключения, чтобы гарантировать, что, за исключением потери мощности, ошибки интерпретатора или тепловой смерти вселенной, скрипт всегда будет работать.
- Сочетание двух - попытка предотвратить сбои в одних случаях, а в других - позволить systemd перезапустить скрипт.
Третий выбор кажется мне наиболее разумным. Таким образом, вопрос заключается в следующем: Какие факторы следует учитывать при оптимизации между «защищенным от сбоев» кодом и разрешением сбоя и перезапуска с помощью systemd?
Для получения дополнительной информации, относящейся к конкретному приложению: с запуском сценария связаны небольшие, но заметные накладные расходы, основная часть будет выполняться от 50 до 100 раз в секунду, она не является "критически важной" в том смысле, что не будет смерти / повреждение в случае сбоя (просто некоторая потеря данных), и я уже ожидаю периодических проблем с сетью, в которой он будет.