Можем ли мы как-нибудь с помощью какого-нибудь хака реализовать круговое перемещение задач в воздушном потоке? В основном это невозможно, но есть ли способ обойтись? - PullRequest
0 голосов
/ 08 мая 2020

Я знаю, что он просто разрешает ациклическое c движение, но есть ли какой-нибудь способ, как мы могли бы реализовать его программно?

1 Ответ

0 голосов
/ 11 мая 2020

Один из способов сделать это - заставить 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
...