import json
from django.http import JsonResponse
from apscheduler.schedulers.background import BackgroundScheduler
from django_apscheduler.jobstores import DjangoJobStore, register_events, register_job
scheduler = BackgroundScheduler()
scheduler.add_jobstore(DjangoJobStore(), 'default')
# 与前端的接口
def test_add_task(request):
if request.method == 'POST':
content = json.loads(request.body.decode()) # 接收参数
try:
start_time = content['start_time'] # 用户输入的任务开始时间, '10:00:00'
start_time = start_time.split(':')
hour = int(start_time)[0]
minute = int(start_time)[1]
second = int(start_time)[2]
s = content['s'] # 接收执行任务的各种参数
# 创建任务
scheduler.add_job(test, 'cron', hour=hour, minute=minute, second=second, args=[s])
code = '200'
message = 'success'
except Exception as e:
code = '400'
message = e
back = {
'code': code,
'message': message
}
return JsonResponse(json.dumps(data, ensure_ascii=False), safe=False)
# 具体要执行的代码
def test(s):
pass
register_events(scheduler)
scheduler.start()
第一个参数是参数名
“package.module:some.object”,即 包名.模块:函数名
动作 | 使用 | 例子 |
---|---|---|
删除任务 | scheduler.remove_job(job_name) |
|
暂停任务 | scheduler.pause_job(job_name) |
|
开启任务 | scheduler.resume_job(job_name) |
|
获取所有任务 | scheduler.get_jobs() |
|
修改任务 | scheduler.modify_job(job_name) |
|
重设任务 | scheduler.reschedule_job(job_name) |
scheduler.reschedule_job(job_id="job1", trigger='interval', minutes=1) |
注:修改任务只能修改参数,如果要修改执行时间的话,有3种方法
第一就把任务删了重新创建,
第二直接操作数据库,
第三用到下面重设任务。