配置execution_timeout后Airflow任务超时失败却未收到告警邮件
问题
为DAG中的每个任务配置了execution_timeout,期望任务运行超时时触发失败。目前任务已因超时失败(状态显示红色),但尽管在default_args中配置了收件邮箱及email_on_failure: True,仍未收到告警邮件。
相关配置代码:
default_args = { 'owner': 'airflow', 'depends_on_past': False, 'start_date': datetime.today() - timedelta(days = 2), 'email':['email@company.com'], 'email_on_failure': True }
任务超时日志:
[2022-10-27 03:06:42,587] {logging_mixin.py:112} INFO - [2022-10-27 03:06:42,585] {timeout.py:42} ERROR - Process timed out, PID: 15847 [2022-10-27 03:06:42,588] {bash_operator.py:140} INFO - Sending SIGTERM signal to bash process group [2022-10-27 03:06:42,602] {taskinstance.py:1145} ERROR - Timeout, PID: 15847 Traceback (most recent call last): File "/home/airflow_user/.local/lib/python3.7/site-packages/airflow/models/taskinstance.py", line 978, in _run_raw_task result = task_copy.execute(context=context) File "/home/airflow_user/.local/lib/python3.7/site-packages/airflow/operators/bash_operator.py", line 124, in execute for line in iter(self.sub_process.stdout.readline, b''): File "/home/airflow_user/.local/lib/python3.7/site-packages/airflow/utils/timeout.py", line 43, in handle_timeout raise AirflowTaskTimeout(self.error_message) airflow.exceptions.AirflowTaskTimeout: Timeout, PID: 15847
排查方向
- 检查Airflow邮件基础配置:确认
airflow.cfg中smtp_host、smtp_port、smtp_user、smtp_password、smtp_mail_from等SMTP参数配置正确,任何参数缺失或错误都会导致邮件无法发送。 - 验证收件邮箱规则:检查收件邮箱是否将Airflow发件地址标记为垃圾邮件,或设置了拦截规则,可先查看垃圾邮件文件夹,或临时将发件地址加入白名单测试。
- 确认任务级配置未覆盖默认值:检查单个任务的定义中是否单独设置了
email_on_failure=False,任务自身的配置会优先覆盖default_args中的设置。 - 查看调度器邮件发送日志:在Airflow调度器日志中搜索包含
email、smtp的关键字,确认是否存在邮件发送失败的报错(如连接超时、认证失败等)。 - 检查Airflow版本bug:部分旧版本Airflow在处理
AirflowTaskTimeout异常时,可能存在邮件触发逻辑的缺陷,可确认当前版本是否有已知相关问题,必要时升级到稳定版本。
内容的提问来源于stack exchange,提问作者kavya
相关产品推荐
相关产品推荐

