Найдите время следующего выполнения периодической задачи в Celery Beat

Я создаю PeriodicTasks для открытия пользователю доступа к следующему уроку, используя следующий код:

task = PeriodicTask.objects.create(
            interval=enrolment.course.interval,
            name=f"enrolment_id: {enrolment.id}",
            task="courses.tasks.next_program",
            args=json.dumps([enrolment.id]),
        )
enrolment.task = task
enrolment.save()

Как получить дату, когда будет запущена следующая задача?

Я использовал встроенный в сельдерей schedule.remaining_estimate:

def datetime_next_lesson(self):
    task = self.task
    if not task: # just in case
        return 0
    # if task hasn't been run yet, last_run_at will be null, use datetime_created in this case
    last_run_at = task.last_run_at or task.start_time or self.datetime_created
    return timezone.now() + task.schedule.remaining_estimate(last_run_at)
Вернуться на верх