Мне нужно запустить задачу и выполнить какие-то действия, повторить попытку, если какие-то условия не выполняются. Задачу следует повторять бесконечно, и повторные попытки прекращаются только при соблюдении условий.
class MyCustomException(Exception):
pass
class MyCustomTask(Task):
def run(self, *args, **kwargs):
try:
if not is_in_condition():
raise MyCustomException
except MyCustomCondition:
do_actions() # execution time about 3 secs.
MyCustomTask.apply_async(countdown=60)
В этом случае у меня есть немедленное следующее выполнение задачи без обратного отсчета.
Я пробовал это тоже:
# the same code
except MyCustomCondition as exc:
do_actions()
raise self.retry(exc=exc, countdown=60, max_retries=-1)
В этом случае у меня есть только одно выполнение do_actions, а затем оно падает с MyCustomException
Также я пробовал параметр eta
как здесь, результат тот же. Настроить нетерпеливое время можно.