airflow - 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)
解决方案
问题似乎出在参数中,更具体地说'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 也很奇怪。
推荐阅读
- c# - 如何在 C# v4.2.6 控制台中读取多个输入行?
- javascript - 如何找到嵌套 JSON 对象中的差异并突出显示它们
- twitter - 带有媒体附件的 Twitter 直接消息最大长度是多少?
- reactjs - 在 React-Redux 中登录后的当前用户数据
- javascript - 如何在html表格中正确隐藏元素
- sqlalchemy - 使用 sqlalchemy 设置连接变量?
- reactjs - getInitialProps 中的下一个 JS 代码在页面重新加载后不执行
- python - 正则表达式字典替换仅适用于某些条目(python)。为什么?
- python - Numpy 相关 x 轴移动
- android - 进度条未显示在 CardView 中