J'ai deux DAG différents qui doivent courir dans différentes fréquences. Un i.e. J'ai défini deux dags comme suit dans deux modules Python différents. P > actuellement, j'ai défini manuellement un écart de 5 minutes entre deux dags. Cette configuration ne fonctionne pas actuellement et n'a pas non plus la fonction pour créer J'avais vérifié les réponses et voici mais n'a pas pu comprendre. p> Remarque: le < Code> Schedule_Intervals code> est indicatif uniquement. L'intention est d'exécuter DAG1 code> doit exécuter chaque semaine et le
DAG2 code> doit fonctionner quotidiennement. Maintenant,
DAG2 code> ne doit exécuter que lorsque DAG1 a terminé, sur chaque occurrence lorsque
DAG1 code> est exécuté.
dag1.py h3>
dag2.py h3>
dag2 code> en fonction du
DAG1 code> au besoin. P>
dag1 code> tous les lundis à un temps fixe et exécuté
dag2 code> quotidiennement sur une heure fixe et lundi, il ne devrait qu'après
dag1 code> Finitions.
Ici, chaque DAG a également plusieurs tâches. P> P>
3 Réponses :
externetasksensor code>
qui attend l'achèvement de la dernière tâche de votre 1er Dag li>
triggerdagrunopérateur code>
. Dans ce cas, cependant, vous ne seriez pas en mesure d'affecter un calendrier_interval code> au 2e Dag (car il sera «de force» déclenché par le 1er DAG) LI>
ol>
Merci à Y2K-Shubham j'ai essayé avec Triggerdagrunopérateur, mais comme il est clair, il ne remplira pas le but d'exécuter DAG2 code> quotidiennement. Je vais essayer de trouver quelque chose avec externetasksensor cependant.
Vous pouvez écrire les deux tâches dans le même Dag et avoir un aval pour définir la dépendance de la tâche comme pour les différentes dépendances du calendrier de tâches, créez le DAG avec un horaire quotidien. Pour la tâche avec une horaire hebdomadaire, écrivez un shortcircuitopérateur pour activer un déclencheur hebdomadaire: p> puis rendez votre tâche hebdomadaire dépend de ce déclencheur hebdomadaire p>
Merci @saurav, cela semble plus proche d'une solution. Mais d'une manière ou d'une autre si j'utilise le shortcircuitopérateur et que la tâche est ignorée (parce que la condition n'a pas réussi), les tâches dépendantes sont également ignorées. Ce qui n'est pas ce que j'attends. Étant donné que la tâche1 ne fonctionnera que hebdomadaire et que la tâche2 devra exécuter quotidiennement (par exemple lorsque la tâche1 est ignorée). tout indice à ce sujet?
Vous pouvez utiliser une tâche conditionnelle. Donc, selon ma première idée (pas la meilleure), écrivez deux fois la tâche quotidienne. Une fois qu'il est exécuté lorsque la tâche hebdomadaire échoue et une fois quand elle passe. Stackoverflow.com/ Questions / 43678408 / ...
J'ai eu lieu à la place de la gâchette 'non_failed' inspirée de ici mais cela ne fonctionne pas. Même pour ce cas aucun travail de déclenchement. J'ai aussi essayé "all_done" qui devrait le laisser courir indépendamment du résultat de la tâche précédente mais n'a pas fonctionné.
Merci @saurav de me donner la bonne direction. Bien que le coupe-circuitopérateur ne fonctionnait pas pour moi en raison du même problème que j'ai mentionné ci-dessus en ce qui concerne la tâche se faire sauter, mais en utilisant la même logique, j'ai pensé à la solution avec BridwyThonOperator. Publier la solution ci-dessous. Merci beaucoup pour!
Après beaucoup de lutte pour comprendre le flux, je suis finalement proposé la réponse moi-même (je ne sais pas à quel point il est optimal mais travaille pour moi actuellement). Merci à Cette répondez et Documents de ramification . Voici ma solution en utilisant BIDDPYTHONOPERATOR .
Ici, le branchphonopérateur utilise la fonction Branch_Tasks pour choisir les tâches à exécuter en fonction de la journée de la semaine.
Une autre capture ici est lorsque crawl_params code> est exécuté lorsque la condition est vraie pour elle, les avals seront également exécutés mais lorsqu'il est ignoré, ce sont des avames également être ignorés. Pour éviter cela, nous devons passer le
trigger_rule = 'non_failié' code> à l'opérateur de la tâche. Ce qui signifie que la tâche doit fonctionner si aucune des tâches en amont n'a échoué (elles ont soit suivi ou ont été ignorées). P> P>