系统重启后如何在 Python 中恢复脚本?

问题描述 投票:0回答:1

问这个问题的时候我是菜鸟,对编程或堆栈溢出或规范和规则一无所知。社区很快就否决了它。

我的问题是学习编写代码保存脚本状态并在重启后恢复它。我的问题用更好的话来说。我将如何在重新启动后从它离开的地方恢复脚本(.py),以及重新启动时的数据。

  1. 一个程序正在执行中。列表、字典、程序状态,都涉及到。

  2. 根据需求,脚本需要重启被测机器。

  3. 机器重启后,返回并从它离开的地方开始。

经过大量搜索后,我实际上是如何让它工作的。

  1. 修改我的程序以获取 JSON 输入,填充其变量、列表和字典。

  2. 然后程序将根据存储在 JSON 中的值创建对象并关联值和属性。

  3. 在JSON中保存最新的运行信息

  4. 编写了一个启动 shell 程序来调用脚本,其中包含重启前保存的 JSON 并从那里恢复。

它就像一个魅力。后来我也实现了更好的东西。但是回答我自己的问题,以上是我当时所做的。

谢谢!

如果这是一个更好的投票,请现在修正投票。

python resume reboot
1个回答
2
投票

你有一系列的问题:

  1. 保存状态(包括当前执行点),
  2. 检测关机/重启,
  3. 关机重启。

我建议实际上你最好忽略中间问题,并确保你的应用程序保持最少量的内部状态——即将所有数据存储在外部数据库等中。

编辑:确保您可以将状态保存在小的原子块中。我编写的应用程序使用基于事务的关系数据库,并将状态保存在一组三个表中)-我还有一个可以事后检测错误的系统。数据库的优点是它有自己的故障恢复机制。

如果你想想你需要重启什么,那么你可以确保你的应用程序重启时几乎是完全一样的状态。你唯一不能做的就是在完全相同的代码行重新开始执行,但实际上这可能不是问题,问题是保持功能的连续性(即除了时间戳之外你不能检测到中断)。

编辑:例如,我的应用程序每次启动时都会读取数据库,查找未标记为完整的记录——这样它几乎可以在任何时候恢复功能。

重启非常简单,编写代码使其可以作为服务运行。

编辑: 最坏的情况实际上不是重启/重启——在这些情况下,所有正在运行的进程都被要求正常关闭——你可以捕获该信号并至少做一些事情(只要它很快)。最坏的情况是电源关闭/崩溃(例如由于过热),然后您不会收到任何警告并且完全关闭的可能性为零。在设计您的应用程序时,您需要考虑可能发生的最糟糕的事情是什么。

© www.soinside.com 2019 - 2024. All rights reserved.