z dokumentacji przepływu powietrza:Airflow: wzór do uruchomienia nawiewu subdag raz
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
Rozumiem subdagoperator jest faktycznie realizowany jako BackfillJob i dlatego musimy zapewnić schedule_interval
dla operatora. Czy istnieje jednak sposób na uzyskanie semantycznego odpowiednika schedule_interval="@once"
dla subdagu? Obawiam się, że jeśli użyję zestawu schedule_interval="@daily"
dla subdagu, że podagar może działać więcej niż jeden raz, jeśli subdag trwa dłużej niż dzień, aby uruchomić.
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
TLDR: jak udawać się „tylko uruchomić ten subdag raz na spuście dag dominującej”
Aby uzyskać wyjaśnienie, sugerujesz użycie [TriggerDagRunOperator] (https://airflow.incubator.apache.org/code.html?highlight=trigger%20dagrun#airflow.operators.TriggerDagRunOperator) w celu wywołania dag bez harmonogram? Kluczem do subdagu jest * blokowanie * semantyki, operator dagrun wyzwalacza tylko wyzwala dagrun, a następnie przechodzi dalej i nie czeka, aż dagrun zostanie ukończony. Dodatkowo, nie uzyskujesz przejrzystości w interfejsie przepływu powietrza, w którym uruchomiony był subdag, po prostu wiesz, że uruchomiono losowy dagrun. – gnicholas