Ошибка проверки ['clocked должен быть one off, one_off должен иметь значение True'].

Я пытаюсь сохранить периодические задачи с помощью пакета django_celery_beat и получаю вышеуказанную ошибку, код следующий. При сохранении используются сигналы постсохранения

class MailTask(models.Model):
    name = models.CharField(max_length=100, blank=True)
    subject = models.CharField(max_length=100)
    message = models.TextField()
    from_email = models.EmailField()
    recipient = models.EmailField()
    sent = models.BooleanField(default=False)
    time_to_send = models.DateTimeField()

def schedule_mail_task(sender, instance, created, **kwargs):
    if created:
        clocked_schedule, created = ClockedSchedule.objects.get_or_create(
            clocked_time=instance.time_to_send,
        )
        periodic_task = PeriodicTask.objects.create(
            clocked=clocked_schedule,
            name=f'instance.name+{instance.timestamp}',
            task='core.tasks.send_mail_func',
            enabled=True,
        )


post_save.connect(schedule_mail_task, sender=MailTask)

Как говорит ошибка, вам нужно установить задание на одноразовое:

periodic_task = PeriodicTask.objects.create(
        clocked=clocked_schedule,
        name=f'instance.name+{instance.timestamp}',
        task='core.tasks.send_mail_func',
        enabled=True,
        one_off=True,
    )
Вернуться на верх