重复 python 命令直到 x 时间过去

重复 python 命令直到 x 时间过去

我有以下问题,由于某些(已知)原因,我的 python 脚本在早期运行阶段崩溃了 100 次中有 99 次。但由于该程序不是我编写的,我不确定如何修复它。所以我想也许我可以重复重新启动脚本,直到它成功完成。

有没有办法做到这一点?我已经看到了每隔 x 秒自动重新启动程序的多种方法,但我只想在程序运行时间不超过 x 分钟时重新启动该程序。因此,如果它运行超过 x 分钟,如果它终止,请不要重新启动它(因为它会成功完成),但如果它在 x 分钟内崩溃,请重新启动它(因为它没有成功运行)。

这可能吗?

对我来说,x 大约是 30 分钟,因为算法可以运行一段时间直到崩溃,如果成功运行,则需要 2 个小时以上才能运行。

答案1

所以我想也许我可以重复重新启动脚本,直到它成功完成。

这很容易。以下将重复您的命令一次/秒,直到成功:

until python myscript.py; do
  sleep 1
done

我已经看到了每隔 x 秒自动重新启动程序的多种方法,但我只想在程序运行时间不超过 x 分钟时重新启动该程序。

有点棘手,但您可以使用timeout命令( 的一部分coreutils,所以您应该拥有它)来包装前面的脚本。以下将每秒重试您的脚本,最多五分钟:

timeout 5m sh -c 'until python myscript.py; do sleep 1; done'

相关内容