github: https://github.com/jarekwg/django-apscheduler.git
# 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 下
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()
def time_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})