schedule模块轻量易用,适合中小型项目;支持自然语言风格定时语法,可取消任务、传参及多线程运行,但属单进程内存调度,无持久化与分布式能力。

Python 中用 schedule 模块实现定时任务,轻量、易读、适合中小型项目,无需复杂配置,几行代码就能跑起来。
安装与基础用法
先通过 pip 安装:
pip install schedule最简单的例子:每 10 秒打印一次消息:
import scheduleimport time
def job():
print("任务执行中...")
schedule.every(10).seconds.do(job)
while True:
schedule.run_pending()
time.sleep(1)
常用时间设定方式
schedule 支持多种自然语言风格的时间表达,写起来直观:
立即学习“Python免费学习笔记(深入)”;
-
按秒/分/小时/天/周:如
every(5).minutes.do(func)、every().hour.at(":30").do(func) -
固定时刻执行:如
every().day.at("10:30").do(func),支持 24 小时制,可带秒("10:30:45") -
每周某天:如
every().monday.do(func)、every().wednesday.at("13:00").do(func) -
每隔 n 天/周:如
every(3).days.do(func)、every(2).weeks.do(func)
任务管理与进阶技巧
实际使用中常需控制任务生命周期或传参:
-
取消任务:调用
job.cancel(),其中job = schedule.every().minute.do(func) -
传参给任务函数:直接在
do()后加参数,如.do(func, "hello", name="world") -
避免阻塞主线程:上面的
while True是阻塞式;若需后台运行,可配合threading启一个守护线程 -
任务重试或异常处理:在任务函数内部加
try...except,模块本身不自动重试
注意事项与局限性
schedule 是单进程内存级调度,适合开发调试或轻量场景:
- 程序退出后任务即停止,不支持持久化或分布式
- 多个
run_pending()调用之间存在间隔,无法保证毫秒级精度 - 不支持任务依赖、优先级、历史记录等高级功能
- 生产环境高频/关键任务建议用
APScheduler或系统级方案(如 cron + Python 脚本)










