# pip install apscheduler# pip install django-apscheduler
将: django_apscheduler 加到 项目setting.py INSTALLED_APPS 中
INSTALLED_APPS = (
...
django_apscheduler,
)
执行:
# python manage.py migrate
会创建两张表:django_apscheduler_djangojob/django_apscheduler_djangojobexecution
通过进入后台管理能方便管理定时任务。
到任一 view.py 下
fromapscheduler.schedulers.backgroundimportBackgroundSchedulerfromdjango_apscheduler.jobstoresimportDjangoJobStore, register_events, register_jobscheduler = BackgroundScheduler()scheduler.add_jobstore(DjangoJobStore(),"default")scheduler.start()deftime_task(task):print("I'm a test job!")scheduler.add_job(time_task,"cron", id=task.name, hour=hour, minute=minute, second=0,kwargs={"task": task})register_events(scheduler)
遇到的问题:
WARNING base.run_job Line:120 Run time of job "time_task (trigger: cron[hour='11', minute='35', second='0'], next run at: 2018-05-31 11:35:00 CST)" was missed by 0:00:01.115909
需要加上参数 : misfire_grace_time 默认1s, 尽量大些
scheduler.add_job(time_task,"cron", id=task.name, hour=hour, minute=minute, second=0, misfire_grace_time=30,kwargs={"task": task})