Вычисление 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
Это очень случайное поведение, которое я не смог объяснить для себя.