
写好一个自动化脚本后,下一步通常就是”让它每天自己跑一次”。轻量场景下,schedule 库比直接写 crontab 更直观。
一、基本用法
schedule.every().day.at("08:30").do(job) 这样链式声明,再写一个循环调用 schedule.run_pending(),脚本就变成了常驻调度器。
二、常用周期
- 每 10 分钟:
every(10).minutes - 每天固定时间:
every().day.at("HH:MM") - 每周一:
every().monday
三、异常别让调度停摆
do() 里的任务一旦抛异常,默认会中断调度循环。给任务包一层 try/except 并记录日志,是保命习惯。
四、和 crontab 怎么选
schedule 常驻进程,适合逻辑简单但需要”进程内共享状态”的任务;crontab 每次拉起新进程,更稳定且不占常驻内存。服务器上我更推荐 crontab + 日志文件,schedule 则适合本地实验和短期任务。
五、别忘了超时保护
如果任务可能卡住(网络请求、文件锁),在 do 的函数里用 func_timeout 或线程超时包一层,避免整条调度被拖死。


