मेरे पास ई-मेल भेजने के लिए फ़ंक्शन को कॉल करने के लिए एक पायथन ऑपरेटर है लेकिन मुझे एक त्रुटि मिल रही है

1 आवश्यक स्थितीय तर्क गुम है: contextDict

def send_email(contextDict, **kwargs):
        """Send custom email alerts."""

        # email title.
        title = "THIS IS A TEST"+file_name+" Failed"

        # email contents
        body = """
        Hi Everyone, <br>
        <br>
        This is a test pls ignore .<br>
        <br>
        """
        send_email('email@domain.com', title, body)

और मैं इसे इसके साथ बुला रहा हूं:

PythonOperator(task_id='fail_task',
                         python_callable=notify_email,
                         provide_context = True,
                         dag=dag)

मैं ब्रांचिंग का उपयोग करके एक शर्त अपस्ट्रीम (मैं कार्य विफलता पर ई-मेल की तलाश नहीं कर रहा हूं) के आधार पर एक ई-मेल भेजने की कोशिश कर रहा हूं

मेरा मानना ​​है कि मुझे फ़ंक्शन में op_args पास करना चाहिए, लेकिन मुझे यकीन नहीं है कि संदर्भ डिक्शनरी को क्या पास करना है क्योंकि इसमें पहले से ही सभी मैक्रोज़, डैग और कार्य की जानकारी आवश्यक है।

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

0
kumarm 19 सितंबर 2019, 05:14

1 उत्तर

सबसे बढ़िया उत्तर

तो आपके pythonOperator में op_kwargs आवश्यक स्थितिगत तर्क से संबंधित एक महत्वपूर्ण मान के साथ गायब है, इसमें नीचे जैसा कुछ होना चाहिए,

PythonOperator(task_id='fail_task',
                         python_callable=notify_email,
                         provide_context = True,
                         op_kwargs={'contextDict': "value"}
                         dag=dag)

नोट: "मान" को प्रासंगिक में बदलें।

यदि संदर्भ डिक्ट अनिवार्य नहीं है तो इसे फ़ंक्शन से हटा दें और इसे चलाएं जैसे आप इसे पहले कैसे कर रहे हैं।

0
Anup 19 सितंबर 2019, 07:25