Задача Python Celery с тайм-аутом – как реализовать тайм-аут с повторными попытками
Я новичок в Celery (5.1.xxx) и встретил чужой код, использующий задачу celery, выполняющую что-то в базе данных (db) и повторяющую попытку в случае сбоя.
@app.task(bind=True, max_retries=3)
def build_my_task(self, xxx)
try:
state = do_something_in_db()
except Exception as err:
raise self.retry(exc=err, countdown=RETRY_COUNTDOWN_SEC)
Теперь, насколько я понимаю, тайм-ауты в задаче связаны только с самой задачей, и повторная попытка отправит сигнал только сельдерею, и он запустит другую задачу с перезапущенным тайм-аутом (я прав?), но мне нужно создать «большой» тайм-аут, который завершится неудачно, включая время повторных попыток задачи (определенное в строке декоратора задачи) с, возможно, дополнительным условием - скажем, если БД вернула какое-то конкретное состояние... Как я должен это понимать?
Не могу сказать, что я что-то пробовал, больше думаю о том, есть ли у Celery какие-то средства для решения этой проблемы, и смогу ли я каким-то образом получить время, которое займет моя задача в целом (включая повторные попытки), и смогу ли я каким-то образом получить текущий счетчик повторных попыток изнутри задачи