À partir de la documentation officielle du Capteur de Tâche Externe:
Attend qu'une tâche différente d'un DAG ou une tâche dans un DAG différent se termine
pour une execution_date spécifique.
:param external_dag_id: L'ID du DAG qui contient la tâche que vous souhaitez
attendre
:type external_dag_id: str
:param external_task_id:L'ID de la tâche qui contient la tâche que vous souhaitez
attendre. Si "None", le capteur attend le DAG
:type external_task_id:str
:param allowed_states: liste des états autorisés, par défaut c'est ``['success']``
:type allowed_states: list
:param execution_delta: différence de temps avec l'exécution précédente à
examiner, par défaut c'est la même execution_date que la tâche ou le DAG actuel.
Pour hier, utilisez [positive!] datetime.timedelta(days=1). Soit
execution_delta soit execution_date_fn peut être passé à
ExternalTaskSensor, mais pas les deux.
:type execution_delta: datetime.timedelta
:param execution_date_fn: fonction qui reçoit la date d'exécution actuelle
et renvoie les dates d'exécution désirées à interroger. Soit execution_delta
soit execution_date_fn peut être passé à ExternalTaskSensor, mais pas les deux.
:type execution_date_fn: callable
:param check_existence:Défini à `True` pour vérifier si la tâche externe existe (quand
external_task_id n'est pas None) ou vérifier si le DAG pour lequel il faut attendre existe (quand
external_task_id est None), et arrêter immédiatement d'attendre si la tâche externe
ou le DAG n'existe pas (valeur par défaut: False).
:type check_existence: bool
Les deux DAGs devraient avoir la depends_on_past
Règle de Déclenchement définie sur True
afin que les nouveaux DAGs planifiés ne s'exécutent que si les exécutions précédentes ont été complétées avec succès.
Ensuite, ajoutez le Capteur de Tâche Externe au début de Dag 2 (celui qui s'exécute plus tard).
Alternativement, vous pourriez créer votre propre capteur personnalisé et l'utiliser via les Modules d'Extensions d'Airflow afin de vérifier la métadatabase pour le statut des Exécutions de DAG.
Vous pourriez également construire des capteurs personnalisés qui utilisent soit des Airflow XCOMs soit des Airflow Variables pour transmettre les temps d'exécution ou tout autre Macro d'Airflow à un Capteur dans le DAG 2.