Django-apscheduler 定时任功能

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})

转载于:https://my.oschina.net/u/1269800/blog/1822704

你可能感兴趣的:(Django-apscheduler 定时任功能)