气流停止发送成功警报

时间:2020-05-12 13:33:53

标签: python airflow slack

我正在运行DAG,成功运行后会向我的闲置帐户发送一封电子邮件。我对电子邮件的内容进行了更改,因此它将包含来自dag的日志,但现在它完全停止了发送电子邮件。该日志未显示任何错误,但是它使用了显示“事件:电子邮件已发送”的消息,现在当然没有。我的问题代码如下:

import glob
import os
from datetime import timedelta
from datetime import datetime
from os import path
from airflow.models import DAG, Variable
from airflow.utils.email import send_email_smtp  
from config_util.config_parser import generate_dags_args
from infrastructure.monitoring.newrelic_callbacks import monitoring_on_success_callback
from infrastructure.monitoring.newrelic_callbacks import monitoring_on_failure_callback


def task_success_callback(context):
    outer_task_success_callback(context, email='a1u1k4ghdfd1t0r8@slack.com')

lines = []
for file in glob.glob("AIRFLOW_HOME/*.log"):
    with open(file) as f:
        lines = [line for line in f.readlines()]
        print(lines)

message = lines        

def outer_task_success_callback(context, email):
    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],
        message
        )

for current_dag_default_args, dag_params, tasks_conf in generate_dags_args(
        current_dir):
    dag = DAG(
        default_args=current_dag_default_args,
        dagrun_timeout=timedelta(hours=18),
        **dag_params
    )
    globals()[dag.dag_id] = dag

    for task_conf in tasks_conf:
        [...]
            on_success_callback=task_success_callback,
            on_failure_callback=monitoring_on_failure_callback,
        )

已修改的行是导入后的行。我首先尝试读取external_task函数中的文件,还认为日志可能不在该目录中,或者找不到当前工作目录中的目录,所以我尝试先将目录更改为AIRFLOW_HOME,但是得到了没结果。我实际上不知道下一步该怎么做。理想的结果是将日志添加到电子邮件内容中

一个大问题是我使用的是大学计算机,无法尝试本地脚本必须首先将其上载到存储库,这使得每次尝试都要花费30分钟以上。

任何想法可能出在哪里?

0 个答案:

没有答案