python - Python 处理系统关闭,但不崩溃(或者我想在出现意外情况时如何恢复状态)
问题描述
所以我有一个 Flask API 通过一个 Systemd 服务运行,该服务运行在一个由电池供电的硬件上(用于控制其他硬件)。我有一堆需要保存的状态,如果出现问题,比如停电,我需要能够恢复该状态。
现在我将状态保存为 JSON 文件,以便在启动时加载它们(如果它们存在)。但我还需要能够再次删除它们,以防它收到关机信号。
我在某处看到可以将 KillSignal 设置为 SIGINT 并将关机作为键盘中断处理。或者关于 ExecStop 的东西。这样就足够了,还是有更好的方法来处理这种情况?
解决方案
如果您查看 linux 系统的关闭日志,您会看到“向所有进程发送 sigterm...向所有进程发送 sigkill”。在正常的关闭过程中,在被杀死之前会获得几秒钟的宽限期。因此,如果您捕获 sigterm,您可以运行关闭代码,但最好在无法捕获的 sigkill 出现之前结束。由于总是发送sigterm 来终止正在运行的进程,因此捕获它确实是退出时清理的正确方法 (TM)。但是由于您使用的是 systemd 服务,因此您也可以在服务中进行清理。
推荐阅读
- c# - C# Main Form BackColor 在图像前面移动
- javascript - 我只得到第二个 .innerHTML 结果,第一个没有运行
- javascript - 快速路由到搜索结果
- python - 计数碱基 DNA 链序列
- reactjs - redux 中是否需要中间件和增强器?
- c# - Serilog 异步 CPU 使用率高达 100%
- javascript - 如果下一个元素为空,如何循环遍历元素而不显示上一个元素?
- asp.net-core - EF Core - 在运行时创建数据库时处理竞争条件
- r - 根据组和年份创建前后标志
- css - 在angularjs中删除动画中间的元素