Невозможно установить расписание PeriodicTask - PullRequest
1 голос
/ 13 февраля 2020

Я использую Django Celery Beat для управления периодическими c задачами.

Здесь я создаю периодическую c задачу и задаю ей некоторый график:

        new_instance = PeriodicTask.objects.create(
            name=f'L1 Synchonisation created at {timezone.now()}',
            task='integrations.tasks.test_task',
        )
        schedule, _ = IntervalSchedule.objects.get_or_create(
            every=self.every,
            period=self.period
        )
        new_instance.interval = schedule
        print(new_instance.interval)  # new_instance.interval is not None
        new_instance.save()
        print(new_instance.interval)  # None
        new_instance.refresh_from_db()
        print(new_instance.interval)  # None        

Мой вопрос: почему new_instance.interval становится None и как мне предотвратить это?

1 Ответ

1 голос
/ 13 февраля 2020

Оказывается, я не могу изменить расписание PeriodicTask. Он может быть установлен только в то время, когда создается экземпляр PeriodicTask:

        schedule, _ = IntervalSchedule.objects.get_or_create(
            every=self.every,
            period=self.period
        )
        new_instance = PeriodicTask.objects.create(
            name=f'L1 Synchonisation created at {timezone.now()}',
            task='integrations.tasks.test_task',
            interval=schedule,
        )
        print(new_instance.interval)  # new_instance.interval is not None
        new_instance.refresh_from_db()
        print(new_instance.interval)  # new_instance.interval is not None

...