我想在传感器操作员中设置SLA。 documentation对使用它并不太清楚。所以我使用S3KeySensor运算符进行了测试,该运算符正在查找不存在的文件。我将sla设置为30秒,我希望在UI中在SLA未命中的30秒后看到记录 - 但它没有发生。我究竟做错了什么?
inputsensor = S3KeySensor(
task_id='check_for_files_in_s3',
bucket_key='adp/backload/20136585/',
wildcard_match=True,
bucket_name='weblogs-raw',
s3_conn_id='AWS_S3_CENTRAL',
timeout=120,
poke_interval=10,
sla=timedelta(seconds=30),
dag=dag)
inputsensor.set_downstream(next_step)
答案 0 :(得分:4)
SLA或服务级别协议使您可以指定应该在其中完成任务的时间增量。如果当前时间与execution_start时间之间的时间间隔超过指定的SLA,则将其视为任务的SLA丢失。
摘自文档-https://airflow.apache.org/concepts.html#slas
服务级别协议或任务或DAG应该成功的时间可以在任务级别设置为时间增量。如果到那时一个或多个实例还没有成功,则会发送一封警报电子邮件,详细列出错过其SLA的任务列表。该事件也记录在数据库中,并可以在Web UI中的“浏览”->“缺少的SLA”下使用,可以在其中分析和记录事件。
我经常观察到,即使任务不是预期的行为,但如果任务进入SLA时间范围内的运行状态,气流也不会触发SLA未命中。这里可能也是一样。我建议您在next_step
上添加30秒的SLA,并且我相信它会触发,因为S3KeySensor
会花费30秒以上的时间来完成。
答案 1 :(得分:2)
'sla': timedelta(hours=2),
https://github.com/apache/incubator-airflow/blob/master/airflow/example_dags/tutorial.py#L44
这一行有一个来自气流Git的例子。
答案 2 :(得分:1)
根据documentation SLA表示计划周期结束后的时间增量。因此,如果您的计划时间间隔是'@daily'
和sla=timedelta(hours=1)
,那么Airflow将在1:00 AM(计划时间超过一小时)检查SLA丢失。
答案 3 :(得分:0)
小时内
'sla': timedelta(hours=2)
几分钟之内
'sla': timedelta(minutes=120)