如何配置Airflow自定义邮件模板?配置后未生效该如何排查
你遇到的配置失效问题,是以下几个遗漏/错误配置项导致的:
参数赋值规则错误
airflow.cfg中的subject_template和html_content_template两个配置项,仅支持传入本地Jinja2模板文件的绝对路径,不支持直接填写模板内容,你当前直接把模板字符串写在配置值里的写法不符合要求,Airflow识别到无效路径后会自动回退到内置默认模板,你看到的注释示例也明确标注了需要传入文件路径。缺少邮件格式配置
需要确认airflow.cfg中default_email_mimetype参数值设为html,如果为默认的plain,HTML模板的样式布局也不会生效。配置修改后未重启服务
airflow.cfg的修改不会热加载,配置调整后必须重启Airflow的scheduler、worker、webserver所有相关进程,新配置才会被加载生效。模板文件权限/覆盖问题
你将模板内容存为单独文件后,需要确保Airflow运行身份的用户有该文件的读取权限;同时要检查对应DAG/任务是否单独配置了自定义邮件回调或模板参数,任务级的配置会覆盖全局airflow.cfg的配置。
正确配置步骤示例
- 新建两个模板文件,存放到Airflow可读取的目录下:
- 主题模板
/opt/airflow/templates/email_subject.j2内容:Airflow alert: {{ti}} - 内容模板
/opt/airflow/templates/email_alert.html内容:Try {{try_number}} out of {{max_tries + 1}}<br> Job Name: {{ti.dag_id}}<br> Task Id: {{ti.task_id}}<br> Exception: {{exception_html}}<br> Log: <a href={{ti.log_url}} target="_blank">Link</a><br> Host: {{ti.hostname}}<br> Log file: {{ti.log_filename}}<br>
- 修改
airflow.cfg对应配置项:subject_template = /opt/airflow/templates/email_subject.j2 html_content_template = /opt/airflow/templates/email_alert.html default_email_mimetype = html - 重启所有Airflow相关进程即可。
内容的提问来源于stack exchange,提问作者Shadow Walker
相关产品推荐
相关产品推荐

