2016-09-16 38 views
0

我想創建一個只能在外部觸發器上運行的DAG(即使用'airflow trigger_dag'命令)。但是,當我這樣做時,除了我想要的'manual_xxx'外,還會看到多個'scheduled_xxx'DagRun。我假設scheduled_xxx DagRun被創建爲回填?如何在使用trigger_dag時避免氣流回填?

有沒有辦法只有'manual_xxx'創建DagRun,沒有'scheduled_xxx'DagRuns?

我嘗試了不同的值起始日期(過去,datetime.now()和未來,但得到了同樣的結果。這是我的玩具DAG ...

from airflow import DAG 
from airflow.operators.bash_operator import BashOperator 
from datetime import datetime, timedelta 

default_args = { 
'start_date': datetime.now(), (also tried past and future dates) 
'schedule_interval': None, 
'depends_on_past': False, 
} 

dag = DAG('my_test_dag', default_args=default_args) 

date_task = BashOperator(
task_id='date', 
bash_command='date', 
dag=dag) 

這是怎麼了發出trigger_dag命令。 ..

airflow trigger_dag my_test_dag 

回答

0

它出現在「schedule_interval」不是任務級參數。如果我將它移動到DAG對象然後我得到預期的結果。也就是說,我只得到了手動觸發DagRun當我添加DAG構造函數的'schedule_interval'參數..

default_args = { 
'start_date': datetime.now(), (also tried past and future dates) 
'depends_on_past': False, 
} 
dag = DAG('my_test_dag', default_args=default_args, **schedule_interval=None**) 

這會導致爲每個外部/手動觸發器(trigger_dag)僅創建一個DagRun。