繁体   English   中英

如何在 Airflow 中设置 SLA?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM