系统开发需要添加用户自己设定的定时任务,当然这种任务不是用户自己编程那种,而是写好的逻辑,用户设定参数执行即可。

上篇Django2结合Celery添加定时任务说明了如何利用Celery设定定时任务,这次需要用户添加自己的定时任务,总共分为步:

  1. 写定时任务的代码,留出需要带入的参数;
  2. 设计Model,通过用户表单获取到定时任务的参数,比如执行时间、其他参数等;
  3. 注册Model 的post_save 或者 pre_save signal,添加或者删除django_celery_beat.model.PeriodicTask 记录;
  4. 如果不想让用户的定时任务与系统的定时任务都存在一张数据表中,可以新建继承自django_celery_beat.model.PeriodicTask的类,当然这样也就需要新建继承自django_celery_beat.schedulers.DatabaseScheduler类,从新建的Task类中分发任务。