Вычисление next_run при каждом запуске для объекта расписания

У меня возник вопрос о django-q, на который я не смог найти ответа в его документации.

Вопрос: Возможно ли вычислить next_run на каждом прогоне в конце?

Причина этого: Кластер q не охватывает местное время с dst (переход на летнее время).

Например:

  • Расписание, которое должно выполняться в 6 утра по немецкому времени.
  • Для летнего времени: Расписание должно выполняться в 4 часа утра (UTC).
  • Для зимнего времени: Расписание должно быть выполнено в 5 утра (UTC).

Чтобы исправить это, я написал пользовательскую логику для следующего запуска. Эта логика происходит в пользовательской функции.

Я попытался получить объект расписания в пользовательской функции и установить там next_run.

Проблема заключается в следующем: Если я помещаю логику next_run перед второй секцией "другие вычисления", она работает, но если я помещаю ее после второй секции "другие вычисления", она не работает. Другие вычисления не связаны с объектом расписания.

def custom_function(**kwargs)

    # 1. some calculations not related to schedule object

    # this place does work
    related_schedule= Schedule.objects.get(id=kwargs["schedule_id"])
    related_schedule.next_run = ... 
    related_schedule.save()

    # 2. some other calculations not related to schedule object

    # this place doesn't

Это очень случайное поведение, которое я не смог объяснить для себя.

Вернуться на верх