Один из способов сделать это - заставить DAG повторно запускаться:
from datetime import datetime
from time import sleep
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from airflow.operators.dagrun_operator import TriggerDagRunOperator
DAG_ID = 'cycle_dag'
default_args = {
'owner': 'Airflow',
'start_date': datetime(2011, 1, 1, 1, 1),
}
with DAG(
dag_id=DAG_ID,
default_args=default_args,
schedule_interval="@once",
catchup=False,
max_active_runs=1, # We want only one running DAG at a time
) as dag:
do = PythonOperator(
task_id='do_some_work', python_callable=sleep, op_args=[10]
)
repeat = TriggerDagRunOperator(task_id='repeat', trigger_dag_id=DAG_ID)
do >> repeat