Mark McDonald10/22/2019, 5:06 PM
I want my
with 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])
task to trigger if any of the tasks above fail. So, in my task definition I have this set:
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
@task(trigger = prefect.triggers.any_failed) def send_error_email():
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 White10/22/2019, 5:35 PM
Mark McDonald10/22/2019, 5:48 PM
emre10/23/2019, 6:19 AM
So as far as I understand, the
SKIP 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.
signal is reserved to be raised exclusively by the user.