Airflow SLA未保存在数据库中。也不会触发任何邮件进入气流

Airflow SLA未保存在数据库中。也不会触发任何邮件进入气流,airflow,airflow-scheduler,Airflow,Airflow Scheduler,我已成功安装smtp服务器。如果作业失败,也可以正常工作。 但是我尝试按照下面的链接设置SLA未命中 没有事件保存。此外,我已检查通过如下 Browse->SLA misses 我试了更多。无法理解这个问题 dag的定义如下: args = { 'owner': 'airflow', 'start_date': datetime(2020, 11, 18), 'catchup':False, 'retries': 0, 'provide_context': True

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

没有事件保存。此外,我已检查通过如下

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)

问题似乎出现在参数中,更具体地说是
“开始日期”:airflow.utils.dates.days\u ago(n=0,minute=1)
,这意味着每次调度器解析DAG文件时都会对开始日期进行新的解释。您应该指定一个“静态”开始日期,如
datetime(2020,11,18)

另见:

我们建议不要使用动态值作为开始日期,尤其是datetime.now(),因为它可能会很混乱。该任务在周期结束时触发,理论上,@hourly DAG不会在now()移动时到达一小时后


在参数中指定默认参数对我来说似乎很奇怪。

问题似乎在参数中,更具体地说是“开始日期”:aiffair.utils.dates.days\u ago(n=0,minute=1),这意味着每次调度程序解析DAG文件时都会对开始日期进行新的解释。您应该指定一个“静态”开始日期,如
datetime(2020,11,18)

另见:

我们建议不要使用动态值作为开始日期,尤其是datetime.now(),因为它可能会很混乱。该任务在周期结束时触发,理论上,@hourly DAG不会在now()移动时到达一小时后



在参数中指定默认参数对我来说似乎很奇怪。

DAG是如何定义的?默认参数是多少?@PhilippJohannis代码编辑为DAG.Hmm,第一眼看上去都不错。你有没有试着把睡眠时间增加到几分钟?可能调度程序不够快,无法注册sla未命中。啊!我看到问题了-看到答案了。@PhilippJohannis,sla没有保存在数据库中。DAG是如何定义的?默认参数是多少?@PhilippJohannis代码编辑为DAG.Hmm,第一眼看上去都不错。你有没有试着把睡眠时间增加到几分钟?可能调度程序不够快,无法注册sla未命中。啊!我看到了问题-看到了答案。@PhilippJohannis,sla未保存在数据库中。默认参数用于某些自定义事件,可以触发,失败时我调用自定义方法sla未保存是sla未保存是sla未保存表您是否设置了固定的开始日期?是的,我已固定了日期,但日期没有问题,如果我增加睡眠时间,它会发送消息,但事件不会保存在数据库中,但将默认参数嵌套到参数中似乎是错误的。当您在DAG中指定默认参数时,它应该直接位于
args
中,这意味着气流将把所有参数传递给每个任务。因此,on_failure(失败时)回调应该与同一级别上的“email_on_failure(失败时发送电子邮件)”类似。此处使用默认参数是因为某些自定义事件可以触发,此处调用自定义方法失败时sla未保存是sla_miss Table您是否设置了固定的开始日期?是的,我已固定日期,但日期没有问题,如果我增加睡眠时间,它会发送消息,但事件不会保存在数据库中,但将默认参数嵌套到参数中似乎是错误的。当您在DAG中指定默认参数时,它应该直接位于
args
中,这意味着气流将把所有参数传递给每个任务。因此,on_failure_回调应该与同一级别的“email_on_failure”类似。
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)