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

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

需要在重启之前保存脚本状态然后在恢复时,我需要从它离开的地方开始脚本。

我的是戴尔 R710 服务器上的 Windows 2k12 系统。 到目前为止我所做的是:

  1. 腌制了我需要重启机器之前的步骤号。 pickle.dump(self.boot_flag, open('c:\data.pkl', 'wb'))
  2. i 给出一个“os.system(”shutdown -r -t 0 -f”)” 我现在的问题是,显示通过我保存的步骤编号,以便我的脚本从那里恢复?
python resume reboot
1个回答
2
投票

你有一系列的问题:

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

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

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

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

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

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

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

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