先导入需要的这些库,并且声明一个DjangoJobStore对象
from django_apscheduler.jobstores import DjangoJobStore
from apscheduler.triggers.cron import CronTrigger
from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.job import Job as AppSchedulerJob
django_job_store = DjangoJobStore()
查看数据库中存储的所有Job
django_job_store.get_all_jobs()
查看数据库中的单个job
django_job_store.lookup_job(job_id)
删除数据库中的单个job
django_job_store.remove_job(job_id)
删除数据库中所有的Job
django_job_store.remove_all_jobs()
更改Job的调度周期
def modify_job(job_id: str, crontab_exp: str):
"""修改定时任务的调度周期"""
job: AppSchedulerJob = django_job_store.lookup_job(job_id)
job.trigger = CronTrigger.from_crontab(crontab_exp)
django_job_store.update_job(job)
暂停Job
def pause_job(job_id: str):
"""暂停定时任务"""
job: AppSchedulerJob = django_job_store.lookup_job(job_id)
job.next_run_time = None
django_job_store.update_job(job)
激活Job
def resume_job(job_id: str):
"""激活定时任务"""
job: AppSchedulerJob = django_job_store.lookup_job(job_id)
# 序列化Job对象为字典类型
job_state = job.__getstate__()
del job_state['next_run_time']
scheduler = BackgroundScheduler()
scheduler.add_jobstore(django_job_store)
scheduler.add_job(replace_existing=True, **job_state)
scheduler.start()