使用trigger_dag时如何避免Airflow回填?

时间:2016-09-16 05:00:10

标签: airflow

我想创建一个仅在外部触发器上运行的DAG(即使用'airflow trigger_dag'命令)。但是,当我这样做时,除了我想要的'manual_xxx'之外,我还会看到多个'scheduled_xxx'DagRuns。我假设scheduled_xxx DagRuns被创建为回填?

有没有办法只创建'manual_xxx'DagRun而没有'scheduled_xxx'DagRuns?

我尝试了start_date(past,datetime.now()和future的不同值,但结果相同。这是我的玩具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

1 个答案:

答案 0 :(得分:0)

“schedule_interval”似乎不是任务级别参数。如果我将它移动到DAG对象,那么我得到预期的结果。也就是说,当我向DAG构造函数添加'schedule_interval'参数时,我只获得手动触发的DagRun。

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。