首页 > 解决方案 > 如何根据 python 脚本中的 if-else 条件在气流中发送电子邮件?

问题描述

我有一个这样的python脚本:

#example.py
def a():
   records=[]
   if len(records)==0:
      #do something
   else:
      #do something

我将使用 python 运算符在我的气流脚本中调用函数“a”,现在如果函数中的“if 语句”变为 true,则我必须发送包含一些内容的电子邮件通知,如果执行 else 语句,我们应该没有收到任何电子邮件通知。我们怎样才能做到这一点?

标签: pythonairflow

解决方案


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

代码(未经测试)

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)

推荐阅读