Python 定时任务:schedule 自动执行脚本太方便!

许多同学都问:

  • 能不能每天早上自动发邮件?
  • 我想每 5 分钟拉一次接口数据,怎么实现?
  • 有没有办法像 Linux 的 crontab 那样在 Python 里定时执行任务?

有!而且只需 1 个库:schedule!

Python 定时任务:schedule 自动执行脚本太方便!

schedule

预见变化

加油每一位


✅ 什么是schedule?

schedule 是一个轻量级定时任务库,支持每分钟、每小时、每天、每周等常见任务调度,不需要像 APScheduler那样复杂。

优点总结:

  • 安装简单(纯 Python,无依赖)
  • 写法直观(几乎像写自然语言)
  • 适合轻量级脚本、数据采集、自动运行程序

Python 定时任务:schedule 自动执行脚本太方便!


快速开始

1️⃣ 安装

 pip3 install schedule

2️⃣ 每 10 秒执行一次任务

import schedule
import time
from datetime import datetime


def job():
    now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    print(f"{now} ⏰ 我执行了一次任务")


schedule.every(1).seconds.do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

输出:

2025-07-09 20:53:31  我执行了一次任务
2025-07-09 20:53:32  我执行了一次任务
2025-07-09 20:53:33  我执行了一次任务
...


常用时间调度方式

Python 定时任务:schedule 自动执行脚本太方便!

常用时间调度方式


✅ 示例:每天 8 点自动运行脚本

import schedule
import time
from datetime import datetime


def backup():
    now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

    print(f"{now}  开始备份数据库...")


# 每天指定时间执行
schedule.every().day.at("20:58").do(backup)

# 持续运行等待任务执行
while True:
    schedule.run_pending()
    time.sleep(1)

自动执行、无需 cron!

2025-07-09 20:58:00  开始备份数据库...


✅ 示例:多任务调度

import schedule
import time
from datetime import datetime


def backup():
    now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

    print(f"{now}  开始备份数据库...")


def job1():
    print(" 每分钟拉一次接口")


def job2():
    print(" 每小时清理缓存")


schedule.every(1).minutes.do(job1)
schedule.every().hour.do(job2)

while True:
    schedule.run_pending()
    time.sleep(1)


️ 进阶技巧

✅ 1. 传参数

import schedule
import time


def increase_tariffs(name):
    print(f"特朗普:对{name}征收19%关税")


schedule.every(10).seconds.do(increase_tariffs, name="印尼")

# 添加一个无限循环来持续检查调度器
while True:
    schedule.run_pending()
    time.sleep(1)  # 避免CPU占用过高

Python 定时任务:schedule 自动执行脚本太方便!


✅ 2. 结合 subprocess 执行外部脚本

import schedule
import time
import subprocess


def run_script():
    subprocess.run(["python", "hello.py"])


schedule.every().day.at("09:52").do(run_script)

# 添加一个无限循环来持续检查调度器
while True:
    schedule.run_pending()
    time.sleep(1)  # 避免CPU占用过高


✅ 3. 指定运行次数(不写死死循环)

import schedule
import time

# 定义一个计数器,记录任务执行的次数
count = 0


# 定义任务函数 job()
def job():
    global count  # 声明使用全局变量 count
    print("✅ 第", count + 1, "次执行")  # 打印当前执行次数(count+1 是由于初始是0)
    count += 1  # 计数器+1

    # 如果执行次数达到3次,就撤销这个任务
    if count >= 3:
        return schedule.CancelJob  # 返回 CancelJob 表明撤销任务


# 设置定时任务:每隔 1 秒执行一次 job()
schedule.every(1).seconds.do(job)

# 主循环:持续检查并执行定时任务
while True:
    schedule.run_pending()  # 检查是否有任务需要执行
    time.sleep(1)  # 每次循环暂停1秒,避免CPU占用过高

Python 定时任务:schedule 自动执行脚本太方便!

指定运行次数


实际场景推荐

  • 每天定时推送通知 / 发邮件
  • 数据爬虫定时抓取、写入数据库
  • 日志清理、缓存刷新
  • 自动打包上传 / 部署项目
  • 定期发送接口请求、检查服务存活


附赠通用封装模板(复制可用)

import schedule
import time
from datetime import datetime

def my_job():
    print(f"[{datetime.now()}] 正在执行任务...")

def run():
    schedule.every().day.at("10:00").do(my_job)

    while True:
        schedule.run_pending()
        time.sleep(1)

if __name__ == "__main__":
    run()


小结

Python 定时任务:schedule 自动执行脚本太方便!

小结


点赞收藏 关注,不错过每一期高效 Python 工具分享!

下期预告:Python openpyxl:读写样式Excel一条龙,测试报表必备! 敬请期待!

© 版权声明

相关文章

13 条评论

您必须登录才能参与评论!
立即登录
none
暂无评论...