从Airflow文档中:
SubDAGs must have a schedule and be enabled. If the SubDAG’s schedule is set to None or @once, the SubDAG will succeed without having done anything
我知道子DAG操作符实际上是通过BackfillJob实现的,因此我们必须为操作符提供一个schedule_interval
。但是,是否有一种方法可以获得与子DAG的schedule_interval="@once"
语义等效的方式?我担心如果我将schedule_interval="@daily"
设置给子DAG,如果子DAG运行时间超过一天,那么子DAG可能会运行多次。
def subdag_factory(parent_dag_name, child_dag_name, args):
subdag = DAG(
dag_id="{parent_dag_name}.{child_dag_name}".format(
parent_dag_name=parent_dag_name, child_dag_name=child_dag_name
),
schedule_interval="@daily", # <--- this bit here
default_args=args
)
... do more stuff to the subdag here
return subdag
如何伪造“仅在父DAG触发一次运行此子DAG”的功能。
@once
不可行)是将实际子DAG任务的execution_timeout
设置得比您在子DAG本身中设置的执行频率短。这样,您将在可能启动更多任务之前超时。我知道这只是猜测,但我很难找到我们分支中与您使用的旧版本Airflow相同的构建版本。 - apathyman