मेरे पास कई डैग हैं जो अलग-अलग ताल पर चलते हैं: कुछ साप्ताहिक, कुछ दैनिक आदि। मैं इसे ऐसे सेटअप करना चाहता हूं कि जब डैग-ए चल रहा हो, तब तक डैग-बी को पूरा होने तक इंतजार करना चाहिए। इसके अलावा, अगर dag-b चल रहा है dag-a को dag-b पूरा होने तक इंतजार करना चाहिए, आदि। क्या बॉक्स से बाहर एयरफ्लो में ऐसा करने का कोई तरीका है?

-1
Ridwan 4 अप्रैल 2020, 17:03

2 जवाब

डैग रन या डैग रन में किसी कार्य को समझने के लिए आप सेंसर ऑपरेटर का उपयोग कर सकते हैं। बाहरी कार्य सेंसर सबसे अच्छा दांव है। सावधान रहें कि आपने टाइमडेल्टा को कैसे पारित किया है। सामान्य तौर पर, विचार यह निर्दिष्ट करना है कि सेंसर को डैग रन को कब खोजने में सक्षम होना चाहिए। उदाहरण: यदि मुख्य डेग 4 यूटीसी पर निर्धारित है, और एक कार्य सेंसर नीचे की तरह डैग में एक कार्य है

ExternalTaskSensor(
            dag=dag,
            task_id='dag_sensor_{}'.format(key),
            external_dag_id=key,
            timedelta=timedelta(days=1),
            external_task_id=None,
            mode='reschedule',
            check_existence=True
        )

फिर दूसरा डैग जिसे होश में आना चाहिए, उसे 4.00UTC पर एक रन ट्रिगर करना चाहिए। वह एक दिन का अंतर निष्पादन तिथि और वर्तमान तिथि के अंतर को ऑफसेट करने के लिए निर्धारित है

0
joss 7 अप्रैल 2020, 03:58

आप जो खोज रहे हैं वह संभवत: ExternalTaskSensor

एयरफ्लो का क्रॉस-डीएजी डिपेंडेंसी विवरण भी काफी उपयोगी है।

यदि आप इसका उपयोग कर रहे हैं, तो Airflow DAG निर्भरता प्लगइन भी है, जो हो सकता है उन निर्भरताओं को देखने के लिए बहुत उपयोगी है।

0
Christopher Beck 5 अप्रैल 2020, 11:26