2017-02-22 14 views
5

पर आधारित एयरफ्लो पर नौकरी चलाना मैं जानना चाहता था कि HTTP पर अनुरोध प्राप्त करने पर एयरफ्लो कार्य निष्पादित किए जा सकते हैं या नहीं। मुझे एयरफ्लो के शेड्यूलिंग हिस्से में दिलचस्पी नहीं है। मैं सिर्फ इसे सेलेरी के विकल्प के रूप में उपयोग करना चाहता हूं।Webrequest

तो एक उदाहरण ऑपरेशन ऐसा कुछ होगा।

  1. उपयोगकर्ता कुछ रिपोर्ट के लिए अनुरोध फ़ॉर्म प्रस्तुत करता है।
  2. बैकएंड अनुरोध प्राप्त करता है और उपयोगकर्ता को एक अधिसूचना भेजता है कि अनुरोध प्राप्त हुआ है।
  3. बैकएंड फिर एयरफ्लो का उपयोग करके तुरंत नौकरी का उपयोग करके नौकरी निर्धारित करता है।
  4. एयरफ्लो फिर डीएजी से जुड़े कार्यों की एक श्रृंखला निष्पादित करता है। उदाहरण के लिए, पहले redshift से डेटा खींचें, MySQL से डेटा खींचें, दो परिणाम सेट पर कुछ ऑपरेशन करें, उन्हें गठबंधन करें और फिर परिणाम अमेज़ॅन एस 3 पर अपलोड करें, एक ईमेल भेजें।

जो भी मैंने ऑनलाइन पढ़ा है, आप कमांड लाइन पर airflow ... निष्पादित करके एयरफ्लो नौकरियां चला सकते हैं। मैं सोच रहा था कि क्या एक अजगर एपीआई है जो एक ही चीज़ को निष्पादित कर सकती है।

धन्यवाद।

+0

हाय के तहत कर रहे हैं! इसके बाद आपका समाधान क्या था? मुझे एक ही समस्या का सामना करना पड़ रहा है –

+0

मैंने अंत में एयरफ्लो का उपयोग नहीं किया क्योंकि मैं समाधान का पता नहीं लगा सका। मैं इसके बजाय सेलेरी का उपयोग कर समाप्त हो गया। –

उत्तर

5

Airflow REST API Plugin आपको यहां मदद करेगा। प्लगइन स्थापित करने के निर्देशों का पालन करने के बाद आपको केवल निम्नलिखित यूआरएल: http://{HOST}:{PORT}/admin/rest_api/api/v1.0/trigger_dag?dag_id={dag_id}&run_id={run_id}&conf={url_encoded_json_parameters} पर क्लिक करना होगा, अपने डैग की आईडी के साथ dag_id को प्रतिस्थापित करना, या तो run_id को छोड़ना या एक अद्वितीय आईडी निर्दिष्ट करना, और conf के लिए एक यूआरएल एन्कोडेड जेसन पास करना ट्रिगर किए गए डैग में आपको आवश्यक पैरामीटर में से कोई भी)।

function triggerDag(dagId, dagParameters){ 
    var urlEncodedParameters = encodeURIComponent(dagParameters); 
    var dagRunUrl = "http://airflow:8080/admin/rest_api/api/v1.0/trigger_dag?dag_id="+dagId+"&conf="+urlEncodedParameters; 
    $.ajax({ 
     url: dagRunUrl, 
     dataType: "json", 
     success: function(msg) { 
      console.log('Successfully started the dag'); 
     }, 
     error: function(e){ 
      console.log('Failed to start the dag'); 
     } 
    }); 
} 
1

आपको अपनी आवश्यकताओं के लिए Airflow HTTP Sensor पर देखना चाहिए। आप इसका उपयोग एक डैग ट्रिगर करने के लिए कर सकते हैं।

3

हवा का प्रवाह में एक नया विकल्प प्रयोगात्मक है, लेकिन में निर्मित, और अधिक हाल ही में एपीआई endpoint की बनाता है:

यहाँ एक उदाहरण जावास्क्रिप्ट समारोह jQuery का उपयोग करती उस वायु प्रवाह API कॉल करने के लिए है 1.7 और 1.8। यह आपको पोर्ट को सुनने और क्लाई नौकरियों को स्वीकार करने के लिए अपने एयरफ्लो सर्वर पर एक आरईएसटी सेवा चलाने की अनुमति देता है।

मेरे पास केवल सीमित अनुभव है, लेकिन मैंने सफलता के साथ टेस्ट डैग चलाए हैं। दस्तावेज़ों के अनुसार:

/api/experimental/dags/<DAG_ID>/dag_runs किसी दिए गए डैग आईडी (POST) के लिए एक dag_run बनाता है।

वह जो भी डैग आप चलाने के लिए चाहते हैं उसे तुरंत चलाने के लिए निर्धारित करेगा। यह अभी भी शेड्यूलर का उपयोग करता है, हालांकि, यह देखने के लिए दिल की धड़कन की प्रतीक्षा है कि डैग चल रहा है और कार्यकर्ता को कार्य पास करता है। यह सीएलआई के समान ही व्यवहार है, हालांकि, मुझे अभी भी विश्वास है कि यह आपके उपयोग-मामले में फिट बैठता है। यह कैसे कॉन्फ़िगर करने के

प्रलेखन यहाँ उपलब्ध है: https://airflow.apache.org/api.html

कुछ सरल उदाहरण ग्राहकों GitHub में, भी, हवा का प्रवाह/api/ग्राहकों

संबंधित मुद्दे