收集调度程序运行任务以用于任务类中的运行方法

时间:2020-11-09 06:24:04

标签: django celery django-celery

我使用基于CLass的芹菜任务schduler,我的任务每30天从模型运行一次 我想在一个字段中收集执行的时间

我创建如下基本任务:

from datetime import timedelta
from celery.task import PeriodicTask

class WorflowScheduler(PeriodicTask):
    abstract = True
    run_every = None
    query_task_pk  = 1

    def run(self):
        pass

我从模型中读取数据并创建计划插入的参数

class PMscheduler(models.Model):
    jobname = models.CharField(max_length=100,unique=True)
    Days = models.IntegerField(blank=True)
    Hours = models.IntegerField(blank=True,validators=[MinValueValidator(0),
                                       MaxValueValidator(23)])
    Minutes = models.IntegerField(blank=True,validators=[MinValueValidator(0),
                                       MaxValueValidator(59)])
    title = models.CharField(max_length=150)
    )

在task.py中,我创建了用于从用户插入的schduler参数:

shedulelist = PMscheduler.objects.all()
for i in shedulelist:
    class CreatePM(WorflowScheduler):
       run_every = timedelta(days=i.Days,hours=i.Hours,minutes=i.Minutes)

       def run(self, **kwargs):
           PMTicket.objects.create(
               title=i.title,
               tobeimplementtime=i.tobeimplementtime,
           return title

我需要先实现,因为任务每30天+ 1天执行一次, 我该怎么办

0 个答案:

没有答案