我使用基于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天执行一次, 我该怎么办