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 puedo desencadenar un rellenado posterior con el operador TriggerDagRunOperator?

Tengo un requisito en el que necesito que el dag desencadenado por TriggerDagRunOperator ejecute un backfill y no solo para la misma fecha de ejecución.

El operador TriggerDagOperator está configurado de la siguiente manera:

trigger1 = TriggerDagRunOperator(
  task_id = 'trigger1',
  trigger_dag_id = 'target_dag',
  conf = {'message': 'Iniciando objetivo 1'},
  reset_dag_run = True,
  wait_for_completion = True
)

El objetivo del dag es básicamente el siguiente:

starting_date = datetime.strptime("2021-11-15", "%Y-%m-%d")

with DAG("target_dag", default_args=default_args, schedule_interval='@daily', max_active_runs=10) as dag:

  start = DummyOperator(
    task_id = 'start'
  )

  t1 = PythonOperator(
    task_id = "t1",
    provide_context=True,
    python_callable=t1
  )

  finish = DummyOperator(
    task_id = 'finish'
  )

  start >> t1 >> finish

target_dag solo se está ejecutando para la fecha de hoy y no está realizando un backfill.

¿Cómo puedo forzar la ejecución del backfill independientemente de las ejecuciones anteriores del dag? Estoy utilizando airflow 2.0.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para forzar al target_dag a backfill independientemente de las ejecuciones anteriores del dag desencadenadas por el TriggerDagRunOperator, puedes añadir el parámetro execution_dates en la configuración del TriggerDagRunOperator.

    Aquí te dejamos una versión actualizada de TriggerDagRunOperator:

    trigger1 = TriggerDagRunOperator(
      task_id = 'trigger1',
      trigger_dag_id = 'target_dag',
      conf = {'message': 'Starting target 1'},
      reset_dag_run = True,
      execution_dates = [datetime(2021, 11, 14)],
      wait_for_completion = True
    )
    

    El parámetro execution_dates admite una lista de fechas para el backfill del DAG. En este ejemplo, lo hemos configurado para que desencadene un backfill para el 14 de noviembre de 2021.

    Una vez que guardes la versión actualizada de TriggerDagRunOperator y vuelvas a ejecutar el DAG, desencadenará el backfill para la fecha especificada además de la fecha actual.

Comments are closed.