【django_apscheduler】使用教程
【django_apscheduler】使用教程
安装
1 安装命令
// 使用pip命令
pip install django-apscheduler
2 注册app
在settings.py文件中新增django-apscheduler
3 创建数据库表
// 注意:不可先引用django_apscheduler中的api方法然后在创建数据表
// 否则执行下述语句的时候会报错表不存在
python manage.py migrate
创建成功后,查看数据库新增2个表
django_apscheduler_djangojob表:定时任务表
django_apscheduler_djangojobexecution表:定时任务执行记录表
项目案例
1注册scheduler实例并启动
// from apscheduler.schedulers.background import BackgroundScheduler
// from django_apscheduler.jobstores import DjangoJobStore, register_events, register_job
scheduler = BackgroundScheduler()
scheduler.add_jobstore(DjangoJobStore(), 'default')
scheduler.start()
2常用api方法
2.1新建任务
参数说明:
func:job需要执行的方法名称
hour/minute/second:执行时间(时分秒)
name:定时任务的名称
args:定时任务的参数(传递到被调用方法中的)
// An highlighted block
time=13:00:01
time = time.split(':')
hour = int(time[0])
minute = int(time[1])
second = int(time[2])
scheduler.add_job(func, 'cron', hour=hour, minute=minute, second=second, name=name, args=[param1])
func中的参数s即是定时任务重的args参数
2.2获取所有任务
获取到的定时任务都是job类,需要获取job类中属性值,如:
id:定时任务的ID(唯一性)
next_run_time:该任务下次执行时间(当定时任务被暂停时,此值为空)
name:定时任务的名称
param:创建定时任务时输入的自定义参数
// An highlighted block
list1=[]
data = scheduler.get_jobs()
for i in data: # i:获取到的对象
print(i,type(i)) //打印获取到的定时任务的数据类型,具体格式如下图
try:
next_run_time = datetime.datetime.strftime(i.next_run_time, '%Y-%m-%d %H:%M:%S') # 将datetime转换成str
status = 1
except:
next_run_time = '已暂停'
status = 0
job = {
'id': i.id,
'name': i.name,
'next_run_time': next_run_time,
'status': status,
'param': i.args
}
list1.append(job)
job格式及数据类型如下:
list1中的数据类型如下:
// id即是定时任务的唯一id
list1->[{'id': '8d68764a12b84e8582ab495cc2fd35a7', 'name': '定时任务名称', 'next_run_time': '2024-03-22 16:30:00', 'status': 1, 'param': ''}]
2.3暂停/恢复任务
//暂停任务,参数为定时任务的唯一id
scheduler.resume_job(job_id=id)
//恢复暂停的任务
scheduler.pause_job(job_id=id)
2.4删除任务
//删除任务
scheduler.remove_job(job_id=id)