如何使用Python在Windows中设置定时任务,关机/代码未运行也能生效?
问题一:电脑关机/代码未运行时定时任务的情况
你使用的Python schedule 库是进程内的轻量调度工具,所有调度逻辑仅在脚本运行的Python进程中生效,没有持久化、跨进程调度能力:
- 只要脚本未运行、电脑关机/休眠,整个调度逻辑就会完全停止,到点不会触发任何任务
- 错过的执行时间点不会补执行,下次重新运行脚本时,只会等待下一个符合触发条件的时间点(也就是下一个周日凌晨1点),之前错过的任务会直接丢失
问题二:保障任务可靠执行的方案
可以根据你的使用场景选择对应方案:
场景1:仅需要电脑开机时任务自动触发,无需关机也执行
直接替换schedule库,使用系统原生的定时任务能力即可,比长期挂着Python脚本更稳定、资源占用更低:
- Windows系统:使用系统自带的「任务计划程序」,新建定时任务,触发条件设置为每周日凌晨1点,执行操作配置为启动Python运行你的任务脚本即可
- Linux/macOS系统:使用
crontab服务,添加一条定时规则,配置每周日凌晨1点执行python 你的脚本路径即可
注意使用该方案时,把原有脚本里的
schedule相关逻辑、while True死循环都删除,仅保留单次执行的任务逻辑即可。
场景2:需要本地电脑关机时任务也能正常执行
必须把任务部署在24小时不间断运行的设备上:
- 最常用的方案是使用云服务器,你可以把脚本部署到云服务器上,要么用系统crontab配置定时规则,要么把你原来的schedule脚本用
systemd/nohup等工具托管为后台常驻进程,只要服务器不关机就会正常触发 - 也可以部署在自己家里长期开机的NAS、树莓派这类设备上,效果和云服务器一致
额外提示:现有代码的小问题
- 代码中
print的写法是Python 2的语法,Python 3需要加括号改为print("I'm working...", t) - 传参时把
sunday拼写为了sonday,注意修改避免后续逻辑出错
内容的提问来源于stack exchange,提问作者Minecraft_Json
相关产品推荐
相关产品推荐

