APScheduler的安装
pip install apscheduler
APScheduler由四部分组成
- 触发器:包含调度逻辑,每一个作业有它自己的触发器,用于决定接下来哪一个作业会运行。除了他们自己初始配置意外,触发器完全是无状态的
- 作业存储(job store):存储被调度的作业,默认的作业存储是简单地把作业保存在内存中,其他的作业存储是将作业保存在数据库中。一个作业的数据讲在保存在持久化作业存储时被序列化,并在加载时被反序列化。调度器不能分享同一个作业存储
- 执行器(executor):处理作业的运行,他们通常通过在作业中提交制定的可调用对象到一个线程或者进城池来进行。当作业完成时,执行器将会通知调度器。
- 调度器(scheduler):你通常在应用只有一个调度器,应用的开发者通常不会直接处理作业存储、调度器和触发器,相反,调度器提供了处理这些的合适的接口。配置作业存储和执行器可以在调度器中完成,例如添加、修改和移除作业。
应用试例
import time
from apscheduler.schedulers.background import BackgroundScheduler
scheduler = BackgroundScheduler()
def testInterval():
time.sleep(2)
print("task start")
# 第一种方式添加任务
scheduler.add_job("testInterval","interval",seconds=5)
scheduler.start()
------------
# 第二种方式添加任务
@scheduler.scheduled_job("interval",seconds=5)
def testInterval():
time.sleep(2)
print("task start")
每隔五秒函数会执行一次
删除任务
- x = scheduler.add_job("testInterval","interval",seconds=5)
x.remove() - 如果有多个任务序列的话可以给每个任务设置ID号,可以根据ID号选择清除对象,且remove放到start前才有效
sched.add_job(myfunc, 'interval', minutes=2, id='my_job_id')
sched.remove_job('my_job_id')