Mark McDonald
10/22/2019, 5:06 PMwith Flow('test flow') as f:
data = get_data()
cleansed_data = munge_data(data)
send_data = email_data(cleansed_data)
alert = send_error_email()
alert.set_upstream(send_data)
f.set_reference_tasks([send_data])
I want my alert
task to trigger if any of the tasks above fail. So, in my task definition I have this set:
@task(trigger = prefect.triggers.any_failed)
def send_error_email():
When the flow runs the first three tasks complete successfully, however and alert task fails, because the trigger fails. (TRIGGERFAIL signal raised during execution.)
However, the overall Flow status is a success because I've set the flow's reference task to the send_data
task
Is this the correct way to use the trigger of "any_failed". It seems to me that it might be more natural for the alert task to be in status of "skipped" if none of the upstream tasks failed.Chris White
10/22/2019, 5:35 PMMark McDonald
10/22/2019, 5:48 PMemre
10/23/2019, 6:19 AMSKIP is treated like SUCCESS
When a task is skipped, it's usually treated as if it ran successfully. This is because tasks only skip if users specifically introduce skipping logic, so the result is compliant with the user's design.
So as far as I understand, the SKIP
signal is reserved to be raised exclusively by the user.