依赖下载
pip install django-apscheduler==0.5.1
配置
对于定时任务来说,应该单独拆成一个子应用(子模块)来使用。所以在当前项目下创建一个Jobs的子应用:
python manage.py startapp jobs
修改settings.py,安装django_apscheduler以及jobs应用。
INSTALLED_APPS = [
'simpleui',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django_apscheduler', # here
'jobs' # here
]
由于django_apscheduler会自动创建相关的表来存储对应的定时任务,所以先进行自动建表:
python manage.py migrate
接下来就可以直接去定义注册定时任务:
# jobs/admin.py
from apscheduler.schedulers.background import BackgroundScheduler
from django_apscheduler.jobstores import DjangoJobStore, register_job
scheduler = BackgroundScheduler()
scheduler.add_jobstore(DjangoJobStore(), "default")
"""
apschedule 支持cron表达式,以下参数代表每天0点运行该任务。
更多的配置请查看参考资料apscheduler 触发器。
"""
try:
@register_job(scheduler, 'cron', hour='0', minute='0', second='0', id='test')
def test():
print('test')
scheduler.start()
except Exception as e:
print(e)
参考资料
- django-apscheduler doc
- apscheduler doc
- apscheduler 触发器Interval,date,cron。