schedule
是一个用于在 Python 中进行任务调度的库, 以下是对 schedule
库的详细介绍:
安装
可以使用 pip
来安装 schedule
库:
pip install schedule
基本用法
schedule
库的基本用法非常简单。可以使用它来安排任务在特定的时间间隔或特定的时间点执行。
1. 安排定期任务
可以使用 schedule.every()
方法来安排定期任务。以下是一些常见的用法示例:
import schedule
import time
def job():
print("I'm working...")
# 每 10 分钟执行一次任务
schedule.every(10).minutes.do(job)
# 每小时执行一次任务
schedule.every().hour.do(job)
# 每天的 10:30 执行一次任务
schedule.every().day.at("10:30").do(job)
# 每星期一执行一次任务
schedule.every().monday.do(job)
# 每星期三的 13:15 执行一次任务
schedule.every().wednesday.at("13:15").do(job)
# 每分钟的第 17 秒执行一次任务
schedule.every().minute.at(":17").do(job)
while True:
schedule.run_pending()
time.sleep(1)
2. 传递参数
可以通过 do()
方法传递参数给任务函数:
import schedule
import time
def job_with_argument(name):
print(f"I'm working on {name}...")
schedule.every(10).minutes.do(job_with_argument, name="project")
while True:
schedule.run_pending()
time.sleep(1)
3. 取消任务
可以使用 cancel_job()
方法来取消已经安排的任务:
import schedule
import time
def job():
print("I'm working...")
schedule.every(10).minutes.do(job)
my_job = schedule.every().day.at("10:30").do(job)
# 取消任务
schedule.cancel_job(my_job)
while True:
schedule.run_pending()
time.sleep(1)
高级用法
1. 并发执行
schedule
库默认是单线程的,但可以结合 threading
模块来实现并发执行:
import schedule
import time
import threading
def job():
print("I'm working...")
def run_threaded(job_func):
job_thread = threading.Thread(target=job_func)
job_thread.start()
schedule.every(10).seconds.do(run_threaded, job)
while True:
schedule.run_pending()
time.sleep(1)
2. 异常处理
可以在任务函数中添加异常处理,以确保任务在遇到错误时不会中断整个调度系统:
import schedule
import time
def job():
try:
# 任务逻辑
print("I'm working...")
except Exception as e:
print(f"An error occurred: {e}")
schedule.every(10).seconds.do(job)
while True:
schedule.run_pending()
time.sleep(1)