Is there a specific kind of exception that can be ...
# flyte-support
r
Is there a specific kind of exception that can be thrown in a task that would prevent retries from happening? I have a task I’d like to retry for various reasons, but if a specific known exception is thrown, I’d like to prevent the task from retrying
👍 1
This looks to be default behavior for bare tasks, but when wrapped in dynamic, the task will retry:
Copy code
from flytekit import dynamic, task, workflow


@task(retries=2)
def test_task(x: int) -> int:
    raise Exception
    return x


@dynamic
def test_task_dynamic(x: int) -> int:
    return test_task(x=x)


@workflow
def test_workflow_dynamic(x: int) -> int:
    return test_task_dynamic(x=x)
^ In this case, the
test_task
retries multiple times
Actually thinking about this more, I can just do something like:
Copy code
from flytekit import dynamic, task, workflow
from flytekit.exceptions.user import FlyteRecoverableException


@task(retries=2)
def test_task(x: int) -> int:
    try:
        ...
    except KnownException:
       raise
    except Exception as e:
         raise FlyteRecoverableException("Other error") from e
    return x


@dynamic(retries=0)
def test_task_dynamic(x: int) -> int:
    return test_task(x=x)


@workflow
def test_workflow_dynamic(x: int) -> int:
    return test_task_dynamic(x=x)
👍 1
162 Views