首页 > 解决方案 > SLA 未保存在数据库中。也不会触发气流中的任何邮件

问题描述

我已经成功设置了 smtp 服务器。如果工作失败,也可以正常工作。但我尝试按照以下链接设置 SLA 未命中。

https://blog.clairvoyantsoft.com/airflow-service-level-agreement-sla-2f3c91cd84cc

mid = BashOperator(
task_id='mid',
sla=timedelta(seconds=5),
bash_command='sleep 10',
retries=0,
dag=dag,
)

没有事件保存。我也检查过如下

Browse->SLA misses

我已经尝试了更多。无法捕捉到问题。

dag 定义为:

args = {
  'owner': 'airflow',
  'start_date': datetime(2020, 11, 18),
  'catchup':False,
  'retries': 0,
  'provide_context': True,
  'email' : "XXXXXXXX@gmail.com",
  'start_date': airflow.utils.dates.days_ago(n=0, minute=1),
  'priority_weight': 1,
  'email_on_failure' : True,
   'default_args':{
        'on_failure_callback': on_failure_callback,
    }
}
d = datetime(2020, 10, 30)



dag = DAG('MyApplication', start_date = d,on_failure_callback=on_failure_callback, schedule_interval = '@daily', default_args = args)

标签: airflowairflow-scheduler

解决方案


问题似乎出在参数中,更具体地说'start_date': airflow.utils.dates.days_ago(n=0, minute=1),这意味着每次调度程序解析 DAG 文件时都会重新解释 start_date。您应该指定一个“静态”开始日期,例如datetime(2020,11,18).

另请参阅气流常见问题解答

我们建议不要将动态值用作 start_date,尤其是 datetime.now(),因为它可能会造成混淆。一旦周期结束,任务就会被触发,理论上,@hourly DAG 永远不会到达现在之后的一个小时,因为 now() 会继续进行。

在我看来,在 args 中指定 default_args 也很奇怪。


推荐阅读