首页 > 解决方案 > 我们能否以某种方式使用一些技巧在气流中实现任务的循环运动?大多数情况下这是不可能的,但有什么办法吗?

问题描述

我知道它只允许非循环运动,但是有什么办法可以像我们以编程方式实现它吗?

标签: airflowdirected-acyclic-graphs

解决方案


一种方法是让 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

推荐阅读