You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Airflow DAG故障告警:多邮箱配置未生效的解决方法

Airflow DAG失败告警多邮箱配置及问题排查

你的default_args中email字段传入邮箱列表的写法本身是正确的,Airflow(1.10及以上版本)支持直接通过列表配置多个告警邮箱。未收到邮件大概率是SMTP服务配置或其他环节的问题,以下是正确配置方式及排查要点:

正确的多邮箱配置方式

方式1:列表形式(推荐,Airflow 1.10+)

default_args = {
    'owner': 'my-project-owner',
    'depends_on_past': False,
    'email': ['email1@org.com', 'email2@org.com'],
    'email_on_failure': True,
    'email_on_retry': True,
    'retries': 2,
    'retry_delay': datetime.timedelta(minutes=5),
    'start_date': datetime.datetime(2020, 4, 1)
}

方式2:逗号分隔字符串(兼容旧版本Airflow)

如果使用Airflow 1.9及更早版本,可将多个邮箱用逗号分隔成字符串:

default_args = {
    # ...其他配置
    'email': 'email1@org.com, email2@org.com',
    # ...其他配置
}

未收到邮件的排查步骤

  • 检查Airflow全局SMTP配置
    确认airflow.cfg文件中SMTP相关参数配置正确:

    • smtp_host:SMTP服务器地址(如smtp.example.com)
    • smtp_port:SMTP端口(如587、465)
    • smtp_user/smtp_password:SMTP认证账号密码
    • smtp_mail_from:合法的发件邮箱(需与SMTP服务器认证账号匹配)
    • 若使用TLS加密,需开启smtp_starttls = True
  • 验证SMTP连接可用性
    在Airflow服务器上运行以下Python脚本,测试SMTP服务是否能正常发送邮件到目标邮箱:

    import smtplib
    from email.mime.text import MIMEText
    
    msg = MIMEText('Airflow告警邮件测试')
    msg['Subject'] = 'DAG失败告警测试'
    msg['From'] = 'airflow@your-org.com'  # 对应smtp_mail_from配置
    msg['To'] = ', '.join(['email1@org.com', 'email2@org.com'])
    
    with smtplib.SMTP('你的SMTP地址', 587) as server:
        server.starttls()
        server.login('SMTP账号', 'SMTP密码')
        server.send_message(msg)
    

    若脚本无法发送邮件,说明问题出在SMTP服务配置,与DAG的邮箱列表配置无关。

  • 查看Airflow日志
    查看对应DAG任务的执行日志,搜索email关键词,排查是否存在邮件发送错误(如SMTP认证失败、连接超时、收件方拦截等);也可查看Airflow scheduler或webserver的全局日志,定位系统级邮件发送问题。

  • 确认任务状态
    email_on_failure仅在任务状态为Failed时触发,需确认任务确实进入失败状态(而非Skipped、Upstream Failed等其他状态)。若需覆盖更多场景,可添加email_on_skip: True等参数。

内容的提问来源于stack exchange,提问作者Sekhar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 16:10:29