Я разрабатываю приложение Django, которое в значительной степени опирается на планирование задач Celery, используя Redis в качестве бэкэнда.Задачи могут быть запущены в течение большого периода времени, а также в течение нескольких секунд / минут.
Я читал о тайм-ауте видимости Redis и последствиях планирования задач с тайм-аутом, превышающим тайм-аут видимости (я также нахожусь в процессе работы с ним в предыдущем проекте), поэтому мне интересно, есть ливсе, что лучше моего решения, а именно: запустить еще одну «вспомогательную» задачу за 5 минут до того, как нужно будет выполнить «основную», запланировав «основную» задачу для запуска в нужное время, сохранив идентификатор задачи в БД, а затем проверивв «основной» задаче, если идентификатор хранимой задачи является тем, который выполняется.Последняя часть (с сохранением идентификатора задачи) требуется, так как несколько запусков «вспомогательной» задачи могут порождать множество «главных» экземпляров задачи, но при таком подходе у каждого будет свой идентификатор задачи.
Мне очень не нравится, как звучит этот подход и как он работает, так как если задача запланирована на месяц с текущего времени, задачи «помощник» и «основной» выполняются до сотни раз.
Я также знаю, что это открытый вопрос, поэтому мне интересен более аккуратный обходной путь, чем само решение.