Python 如何在成功后向airflow发送的电子邮件添加内容
我希望发送一封电子邮件,其中包含成功时气流DAG输出的信息。我的两种方法是:第一种是从主DAG执行函数(我不能这样做,因为DAG似乎无法访问它运行的输出,我认为这是合乎逻辑的),第二种方法更有希望,将其配置为发送DAG运行的日志。我在《气流》中按照这个想法创建了它,但是当它发送电子邮件时,它们是空白的。我尝试查找日志并创建一个列表作为消息传递,如下所示:Python 如何在成功后向airflow发送的电子邮件添加内容,python,airflow,Python,Airflow,我希望发送一封电子邮件,其中包含成功时气流DAG输出的信息。我的两种方法是:第一种是从主DAG执行函数(我不能这样做,因为DAG似乎无法访问它运行的输出,我认为这是合乎逻辑的),第二种方法更有希望,将其配置为发送DAG运行的日志。我在《气流》中按照这个想法创建了它,但是当它发送电子邮件时,它们是空白的。我尝试查找日志并创建一个列表作为消息传递,如下所示: def task_success_callback(context): outer_task_success_callback(con
def task_success_callback(context):
outer_task_success_callback(context, email='a1u1k6u3f0v1t0r8@justeat.slack.com')
def outer_task_success_callback(context, email):
lines = []
for file in glob.glob("AIRFLOW_HOME/*.log"):
with open(file) as f:
lines = [line for line in f.readlines()]
print(lines)
mensaje = lines
subject = "[Airflow] DAG {0} - Task {1}: Success".format(
context['task_instance_key_str'].split('__')[0],
context['task_instance_key_str'].split('__')[1]
)
html_content = """
DAG: {0}<br>
Task: {1}<br>
Log: {2}<br>
""".format(
context['task_instance_key_str'].split('__')[0],
context['task_instance_key_str'].split('__')[1],
mensaje
)
def task_success_回调(上下文):
外部任务成功回调(上下文、电子邮件)a1u1k6u3f0v1t0r8@justeat.slack.com')
def外部任务成功回调(上下文、电子邮件):
行=[]
对于glob.glob(“AIRFLOW_HOME/*.log”)中的文件:
打开(文件)为f时:
lines=[f.readlines()中的行对应行]
打印(行)
mensaje=线条
subject=“[Airflow]DAG{0}-任务{1}:成功”。格式(
上下文['task\u instance\u key\u str'].split('uuuu')[0],
上下文['task\u instance\u key\u str'].split('uuuu')[1]
)
html_content=“”
DAG:{0}
任务:{1}
日志:{2}
“”格式(
上下文['task\u instance\u key\u str'].split('uuuu')[0],
上下文['task\u instance\u key\u str'].split('uuuu')[1],
门萨耶
)
它似乎没有产生任何效果。我甚至没有返回一个错误。更奇怪的是,现在在气流日志中,它甚至没有提到它曾经做过的“电子邮件发送”事件:首先:传递消息 要发送有关DAG运行信息的邮件,您需要两个核心气流组件来支持您。 它们是XCOM和Python操作符=>provide\u context