“Crashproofing”脚本与使用systemd保证近常量操作的比较

2024-06-15 05:09:55 发布

您现在位置:Python中文网/ 问答频道 /正文

也许这是一个广泛的问题,但我还没有找到其他地方的答案,所以这里去

我正在编写的Python脚本需要在已部署的设备上不断运行(在一个完美的世界中,我认识到这可能并不完全可能)。我已经花了很多时间来添加“try…except”语句,以便在出现问题时,脚本可以恢复并继续工作

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

三种选择:

  • 不尝试处理任何异常,只允许systemd在异常终止时重新启动它
  • 精心地为每一个可能的异常创建处理程序,以确保在没有断电、解释器错误或宇宙热死的情况下,脚本始终能够运行
  • 两者的结合——在某些情况下努力防止崩溃,而在另一些情况下允许崩溃,并让systemd重新启动脚本

第三种选择在我看来是最合理的。所以问题是:在“防崩溃”代码之间进行优化,并允许systemd崩溃和重启时,应该考虑哪些因素?

对于一些特定于应用程序的信息:启动脚本时会有一个很小但很明显的开销,主要部分将每秒运行50到100次,这不是“任务关键型”的,因为在发生故障时不会发生死亡/损坏(只是一些数据丢失),我已经预料到它的网络会时断时续地出现问题


Tags: 答案脚本处理程序部署地方时间世界情况
1条回答
网友
1楼 · 发布于 2024-06-15 05:09:55

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

正如您所建议的,计划未知的异常也是谨慎的。可能还有一个小的内存泄漏,即使在正确运行的情况下也会导致应用程序崩溃。因此,如果systemd失败,让它自动重新启动仍然是谨慎的,即使所有预期的失败模式都已处理

相关问题 更多 >