如何修改Python脚本实现每60秒自动停止并重启?
实现定时+崩溃自动重启的Python脚本
要实现每60秒强制重启,同时保留崩溃自动重启的功能,可以通过定时器触发自定义异常的方式中断主逻辑,结合外层循环完成重启。以下是修改后的代码:
import threading class RestartException(Exception): pass def trigger_restart(): raise RestartException("定时重启触发") while True: restart_timer = threading.Timer(60.0, trigger_restart) try: restart_timer.start() do_main_logic() except RestartException: # 捕获定时重启异常,直接进入下一次循环(重启) pass except Exception: # 捕获其他崩溃异常,同样进入下一次循环 pass finally: # 确保定时器被取消,避免残留定时器触发错误 restart_timer.cancel()
代码说明:
- 定义
RestartException作为定时重启的触发信号,区别于普通崩溃异常。 trigger_restart函数负责抛出重启异常,由定时器在60秒后调用。- 每次循环启动一个60秒定时器,然后执行主逻辑
do_main_logic():- 如果主逻辑在60秒内完成,
finally块会取消定时器,外层while True会自动启动下一次循环(即重启)。 - 如果主逻辑运行超过60秒,定时器触发
RestartException,中断主逻辑,进入下一次循环重启。 - 如果主逻辑崩溃抛出其他异常,同样被捕获,进入下一次循环重启。
- 如果主逻辑在60秒内完成,
finally块必须执行定时器取消操作,防止主逻辑提前完成后,残留的定时器在后续抛出异常干扰流程。
如果你的do_main_logic()是阻塞型长运行任务,这种方式可以有效中断它;如果是非阻塞任务,也能确保每60秒完成一次重启循环。
内容的提问来源于stack exchange,提问作者pim5825
相关产品推荐
相关产品推荐

