Python schedule 定时任务执行教程:轻量级任务调度入门
Python schedule 库实现定时任务调度,支持分、时、天、周几等多种触发方式,配合 while 循环跑后台任务,适合数据抓取、报表生成、定时提醒等办公自动化场景。
场景痛点
每天到点手动跑数据报表、定时检查库存、定期推送监控消息,靠人盯时间既容易忘,又浪费时间。Windows 任务计划、Linux crontab 配置起来繁琐,跨平台迁移还麻烦。用 Python 的 schedule 库,十几行代码就能把定时任务写进脚本,跟着主程序一直跑,灵活又好维护。
用到的库
pip install schedule
完整代码
import schedule
import time
from datetime import datetime
# 定义要定时执行的任务
def job_report():
"""生成日报表的任务"""
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(f"[{now}] 正在生成今日销售日报...")
# 这里替换成你自己的业务逻辑:读数据库、生成Excel、发邮件等
print("日报已生成完毕。")
def job_clean_cache():
"""清理临时缓存的任务"""
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(f"[{now}] 正在清理临时缓存文件...")
print("缓存清理完成。")
def main():
# 每 10 分钟执行一次报表任务
schedule.every(10).minutes.do(job_report)
# 每小时整点执行一次清理任务
schedule.every().hour.do(job_clean_cache)
# 每天 09:00 执行一次报表任务
schedule.every().day.at("09:00").do(job_report)
# 每周一 10:30 执行一次清理任务
schedule.every().monday.at("10:30").do(job_clean_cache)
print("定时任务已启动,按 Ctrl+C 退出...")
# 主循环:不断检查是否有任务到点
while True:
schedule.run_pending()
time.sleep(1)
if __name__ == "__main__":
main()
代码讲解
schedule.every(10).minutes.do(func):注册一个每 10 分钟执行一次的任务。schedule.every().hour.do(func):每小时整点触发。schedule.every().day.at("09:00").do(func):每天指定时间触发,时间字符串用 24 小时制HH:MM。schedule.every().monday.at("10:30"):指定星期几的具体时间触发,也支持.tuesday、.wednesday等。schedule.run_pending():在循环里不断检查注册的任务是否到点,到点就执行。time.sleep(1):每秒轮询一次,避免 CPU 空转。
运行结果
运行脚本后控制台持续打印当前时间和任务执行情况,到点会自动输出"正在生成今日销售日报"等信息。保持窗口不关,任务就会按计划周期触发。按 Ctrl+C 可退出。
注意事项
- schedule 是单线程串行执行,某个任务卡住会阻塞后续任务;长耗时任务请放到子线程或子进程里跑。
- 脚本窗口关闭后任务就停了,想长期后台运行请配合 nohup、pm2 或 Windows 计划任务。
- 任务时间取的是本机系统时间,服务器时区要确认对。
- schedule 不支持秒级精度调度(默认轮询间隔决定),高频需求建议改用 APScheduler 或系统 crontab。

更新时间:2026-09-14 20:36:36
上一篇:Python 读取屏幕像素颜色:pyautogui 取色器与监控