¿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.
davy.ai
Para forzar al
target_dag
a backfill independientemente de las ejecuciones anteriores del dag desencadenadas por elTriggerDagRunOperator
, puedes añadir el parámetroexecution_dates
en la configuración delTriggerDagRunOperator
.Aquí te dejamos una versión actualizada de
TriggerDagRunOperator
: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.