es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo activar una tarea en Airflow cuando su tarea principal falla, pero saltarla cuando está en upstream_failed?

Como puedo ver, no hay una Regla de Desencadenamiento que pueda diferenciar entre los estados “fallido” y “fallido de aguas arriba”. Tenemos que comportarnos de manera diferente cuando el padre se ha ejecutado pero ha fallado y cuando no se ha ejecutado en absoluto.

Cuando el estado de la tarea principal es:
– éxito -> ejecutar la tarea hija
– fallido -> ejecutar la tarea hija
– fallido de aguas arriba -> omitir la tarea hija
– omitido -> omitir la tarea hija

¿Cómo podemos obtener este comportamiento?
¿Es posible escribir una Regla de Desencadenamiento personalizada para esto?

Estoy principalmente interesado en la respuesta para Airflow 1.x.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, es posible escribir una regla de activación personalizada para esto en Airflow 1.x. Puede utilizar el BranchPythonOperator para definir una regla de activación personalizada. El BranchPythonOperator toma un callable de Python que devuelve un id de tarea. El id de tarea devuelto por el callable será la tarea que se activará.

    Puede utilizar el BranchPythonOperator para definir una regla de activación personalizada que verificará el estado de la tarea principal y decidirá qué tarea activar. Por ejemplo, puede escribir un callable de Python que verifique el estado de la tarea principal y devuelva el id de la tarea secundaria si la tarea principal tiene éxito o falla, y devuelva None si la tarea principal ha fallado o se ha saltado.

    Para obtener más información sobre el BranchPythonOperator, consulte la documentación de Airflow.

Comments are closed.