schedule 是轻量纯 python 定时任务库,适合单机简单周期任务;支持链式时间设置、参数传递、装饰器兼容及任务管理调试功能。

schedule 是一个轻量、易读、纯 Python 实现的定时任务调度库,适合单机场景下的简单周期性任务(如每5分钟拉一次数据、每天早上9点发邮件),不依赖系统 cron 或复杂框架。
安装与基础用法
通过 pip 安装即可:
pip install schedule最简示例:每秒打印一次
import scheduleimport time
def job():
print("任务执行中...")
schedule.every(1).seconds.do(job)
while True:
schedule.run_pending()
time.sleep(1)
常见时间设置方式
支持链式调用,语义清晰:
立即学习“Python免费学习笔记(深入)”;
专为中小型企业定制的网络办公软件,富有竞争力的十大特性: 1、独创 web服务器、数据库和应用程序全部自动傻瓜安装,建立企业信息中枢 只需3分钟。 2、客户机无需安装专用软件,使用浏览器即可实现全球办公。 3、集成Internet邮件管理组件,提供web方式的远程邮件服务。 4、集成语音会议组件,节省长途话费开支。 5、集成手机短信组件,重要信息可直接发送到员工手机。 6、集成网络硬
- schedule.every().minute.do(func) — 每分钟执行
- schedule.every(10).minutes.do(func) — 每10分钟执行
- schedule.every().hour.at(":30").do(func) — 每小时第30分执行
- schedule.every().day.at("10:30").do(func) — 每天10:30执行
- schedule.every().monday.do(func) — 每周一执行
- schedule.every().wednesday.at("13:15").do(func) — 每周三13:15执行
传递参数与带装饰器的任务
支持向任务函数传参:
schedule.every(2).seconds.do(job, "hello", name="world")也兼容带参数的装饰器写法(需确保被装饰函数可被直接调用):
from functools import wrapsdef log_call(func):
@wraps(func)
def wrapper(*args, **kwargs):
print(f"Calling {func.__name__}")
return func(*args, **kwargs)
return wrapper
@log_call
def greet(name):
print(f"Hello, {name}!")
schedule.every(3).seconds.do(greet, "Alice")
管理与调试技巧
方便查看、取消或清空任务:
- schedule.jobs — 查看当前所有待执行任务列表
- job.cancel() — 取消某项任务(需先保存 job 对象)
- schedule.clear() — 清空全部任务
- schedule.idle_seconds — 获取下次执行还需等待的秒数(可用于优化 sleep 时长)
实际运行时建议用 time.sleep(schedule.idle_seconds or 1) 替代固定 sleep,减少空转。









