How to pass parameter to PythonOperator in Airflow

前端 未结 2 1968
梦毁少年i
梦毁少年i 2020-12-16 12:53

I just started using Airflow, can anyone enlighten me how to pass a parameter into PythonOperator like below:

t5_send_notif         


        
相关标签:
2条回答
  • 2020-12-16 13:35
    1. Pass a dict object to op_kwargs
    2. Use the keys to access their value from kwargs dict in your python callable

      def SendEmail(**kwargs):
          print(kwargs['key1'])
          print(kwargs['key2'])
          msg = MIMEText("The pipeline for client1 is completed, please check.")
          msg['Subject'] = "xxxx"
          msg['From'] = "xxxx"
          ......
          s = smtplib.SMTP('localhost')
          s.send_message(msg)
          s.quit()
      
      
      t5_send_notification = PythonOperator(
          task_id='t5_send_notification',
          provide_context=True,
          python_callable=SendEmail,
          op_kwargs={'key1': 'value1', 'key2': 'value2'},
          dag=dag,
      )
      
    0 讨论(0)
  • 2020-12-16 13:37

    PythonOperator have a named parameter op_kwargs and accepts dict object.

    have

    t5_send_notification = PythonOperator(
        task_id='t5_send_notification',
        provide_context=True,
        python_callable=SendEmail,
        op_kwargs={"my_param":'value1'},
        dag=dag,
    )
    
    def SendEmail(my_param,**kwargs):
        print(my_param) #'value_1'
        msg = MIMEText("The pipeline for client1 is completed, please check.")
        msg['Subject'] = "xxxx"
        msg['From'] = "xxxx"
        ......
        s = smtplib.SMTP('localhost')
        s.send_me
    
    0 讨论(0)
提交回复
热议问题