我正在运行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分钟以上。
任何想法可能出在哪里?