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

时间:2014-11-03 09:09:22

标签: python resume reboot

需要在重启之前保存脚本状态,然后在恢复时,我需要从剩下的位置开始脚本。

Mine是Dell R710服务器上的Windows 2k12系统。 到目前为止我所做的是: 1.腌制我需要重新启动机器的步骤编号。 pickle.dump(self.boot_flag,open('c:\ data.pkl','wb')) 2.我给了一个“os.system(”shutdown -r -t 0 -f“)” 我的问题是,显示传递我保存的步骤编号,以便我的脚本从那里恢复?

1 个答案:

答案 0 :(得分:1)

你有一系列问题:

  1. 保存状态(包括临时执行点),
  2. 检测关机/重启,
  3. 关机后重启。
  4. 我建议你最好忽略中间问题,并确保你的应用程序保持最小量的内部状态 - 即将所有数据存储在外部数据库等。

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

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

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

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

    编辑: 最糟糕的情况实际上不是重启/重新启动 - 在这些情况下,所有正在运行的进程都被要求很好地关闭 - 你可以捕获该信号并至少做一些事情(只要它很快)。最坏的情况是断电/死机(例如由于过热),然后你没有得到任何警告,也没有机会进行干净关机。在设计应用程序时,您需要考虑可能发生的最糟糕的事情。