依赖下载

  1. pip install django-apscheduler==0.5.1

配置

对于定时任务来说,应该单独拆成一个子应用(子模块)来使用。所以在当前项目下创建一个Jobs的子应用:

  1. python manage.py startapp jobs

修改settings.py,安装django_apscheduler以及jobs应用。

  1. INSTALLED_APPS = [
  2. 'simpleui',
  3. 'django.contrib.admin',
  4. 'django.contrib.auth',
  5. 'django.contrib.contenttypes',
  6. 'django.contrib.sessions',
  7. 'django.contrib.messages',
  8. 'django.contrib.staticfiles',
  9. 'django_apscheduler', # here
  10. 'jobs' # here
  11. ]

由于django_apscheduler会自动创建相关的表来存储对应的定时任务,所以先进行自动建表:

  1. python manage.py migrate

接下来就可以直接去定义注册定时任务:

  1. # jobs/admin.py
  2. from apscheduler.schedulers.background import BackgroundScheduler
  3. from django_apscheduler.jobstores import DjangoJobStore, register_job
  4. scheduler = BackgroundScheduler()
  5. scheduler.add_jobstore(DjangoJobStore(), "default")
  6. """
  7. apschedule 支持cron表达式,以下参数代表每天0点运行该任务。
  8. 更多的配置请查看参考资料apscheduler 触发器。
  9. """
  10. try:
  11. @register_job(scheduler, 'cron', hour='0', minute='0', second='0', id='test')
  12. def test():
  13. print('test')
  14. scheduler.start()
  15. except Exception as e:
  16. print(e)

参考资料