如何根据python脚本中的if-else条件在气流中发送电子邮件?
我有这样一个python脚本:如何根据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语句,我们不应该收到任何电子邮件通知。 我们如何才能做到这一点 您需要在函数中传递上下文
#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)