0

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

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

我为 start_date 尝试了不同的值(过去,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
4

1 回答 1

0

看来“schedule_interval”不是任务级别的参数。如果我将它移动到 DAG 对象,那么我会得到预期的结果。也就是说,当我将“schedule_interval”参数添加到 DAG 构造函数时,我只会获得手动触发的 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。

于 2016-09-16T17:46:39.503 回答