Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何根据python脚本中的if-else条件在气流中发送电子邮件?_Python_Airflow - Fatal编程技术网

如何根据python脚本中的if-else条件在气流中发送电子邮件?

如何根据python脚本中的if-else条件在气流中发送电子邮件?,python,airflow,Python,Airflow,我有这样一个python脚本: #example.py def a(): records=[] if len(records)==0: #do something else: #do something 我将使用python操作符在我的airflow脚本中调用函数“a”,现在如果函数中的“if语句”变为true,我必须发送包含一些内容的电子邮件通知,如果执行else语句,我们不应该收到任何电子邮件通知。 我们如何才能做到这一点 您需要在函数中传递上下文

我有这样一个python脚本:

#example.py
def a():
   records=[]
   if len(records)==0:
      #do something
   else:
      #do something
我将使用python操作符在我的airflow脚本中调用函数“a”,现在如果函数中的“if语句”变为true,我必须发送包含一些内容的电子邮件通知,如果执行else语句,我们不应该收到任何电子邮件通知。
我们如何才能做到这一点

您需要在函数中传递上下文,可以通过在调用a()的PythonOperator中设置provide_context=True来完成

代码(未测试)


将发送电子邮件通知的代码放在
if
语句之后,然后删除
else
。到底是什么问题?你在挣扎哪一部分?
def a(context):
   records=[]
   if len(records)==0:
      #do something
      email = EmailOperator(task_id="email_task",
                            to ="put reciever email id here",
                            subject="sample_subject",
                            html_content="email content can be html",
                            dag = context.get("dag") )
      email.execute(context=context)


   else:
      #do something
      #your logic


with DAG(dag_id='sample_dag', schedule_interval=None, default_args=default_args):

    sample_task = PythonOperator(task_id="some_task_id",
                                 python_callable=a,
                                provide_context = True)
def a(**kwargs):
    records=[]
    if len(records)==0:
        #do something
        email = EmailOperator(
        task_id='send_email',
        to='email@email.com',
        subject='subject',
        html_content='content',
        dag=dag
        )
        email.execute(context=kwargs)
else:
    pass

sample_task = PythonOperator(task_id='some_task_id', python_callable=a, 
provide_context=True, dag=dag)