"Crash-proofing" 脚本 vs.using systemd 以保证近乎持续的运行

"Crash-proofing" script vs.using systemd to guarantee near-constant operation

也许这是一个宽泛的问题,但我在其他地方找不到答案,所以就这样吧。

我正在编写的 Python 脚本需要在部署的设备上不断地 运行(在理想情况下,我知道这可能不太可能)。我已经花时间在整个过程中添加 "try...except" 语句,这样,如果出现问题,脚本将恢复并继续工作。

问题是我不确定我能否(也不应该)处理每一个可能抛出的异常。因此,我决定让脚本终止并使用 systemd 重新启动它可能更好。

三个选项:

我觉得第三个选择最合理。所以问题是这样的:在"crash-proof"代码之间进行优化并允许systemd崩溃和重启时应该考虑哪些因素?

有关更多特定于应用程序的信息:启动脚本有一个小但明显的开销,主要部分将 运行 每秒 50 到 100 次,而不是 "mission critical"因为在发生故障时不会有 death/damage(只是一些数据丢失),而且我已经预料到网络会出现间歇性问题。

应该处理所有已知的异常情况。任何未定义的行为都是潜在的安全问题。

正如您所建议的,为未知异常做好计划也是明智的。也许还有一个小的内存泄漏也会导致应用程序崩溃,即使它 运行 正确。因此,即使已处理所有预期的故障模式,systemd 在它失败时自动重新启动它仍然是明智的。