Is it possible to make an Airflow DAG fail if any task fails?
I usually have some cleaning up tasks at the end of a DAG and as it is now, whenever the last task succeeds
Another solution can be to add a final PythonOperator that checks the status of all tasks in this run:
final_status = PythonOperator(
task_id='final_status',
provide_context=True,
python_callable=final_status,
trigger_rule=TriggerRule.ALL_DONE, # Ensures this task runs even if upstream fails
dag=dag,
)
def final_status(**kwargs):
for task_instance in kwargs['dag_run'].get_task_instances():
if task_instance.current_state() != State.SUCCESS and \
task_instance.task_id != kwargs['task_instance'].task_id:
raise Exception("Task {} failed. Failing this DAG run".format(task_instance.task_id))