
[英]How to set time object on SLA in airflow instead of timedelta?
[英]How to set a SLA in Airflow?
我想在 Sensor Operator 中设置 SLA。 文档对它的使用不太清楚。 因此,我使用 S3KeySensor 运算符进行了测试,该运算符正在查找不存在的文件。 我将 sla 设置为 30 秒,我希望在 30 秒后在UI 中看到记录 - 在 SLA 未命中中 - 但它没有发生。 我究竟做错了什么?
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)
'sla': timedelta(hours=2),
来自 Airflow Git 存储库的示例: airflow/example_dags/tutorial.py#L54 。
SLA或服务级别协议允许您指定应在其中完成任务的时间点。 如果当前时间和execution_start时间之间的时间间隔超过指定的SLA,则认为该任务的SLA未命中。
来自文档 - https://airflow.apache.org/concepts.html#slas
服务级别协议或任务或DAG应该成功的时间可以在任务级别设置为timedelta。 如果此时一个或多个实例未成功,则会发送警报电子邮件,详细说明错过其SLA的任务列表。 该事件也记录在数据库中,并在Web UI中的Browse-> Missed SLA下可用,可以分析和记录事件。
我经常观察到,如果任务在SLA timedelta内进入运行状态,气流不会触发SLA未命中,即使这不是预期的行为。 这可能是同样的情况。 我建议你在next_step
上添加30秒SLA并且我确定它会触发,因为S3KeySensor
需要超过30秒才能完成。
根据文档, SLA 表示计划期结束后的时间增量。 因此,如果您的计划间隔为'@daily'
且sla=timedelta(hours=1)
则 Airflow 将在凌晨 1:00 检查 SLA 未命中,即计划周期结束加一小时。
小时
'sla': timedelta(hours=2)
在几分钟内
'sla': timedelta(minutes=120)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.