airflow任务中sla的默认值

Default value of sla in airflow task

我正在尝试将 SLA 与气流 DAG 结合使用。但是我无法在文档中的任何地方获取 SLA 的默认值(未选中 SLA 时)。

task2 = PythonOperator(
    task_id="task_2",
    sla=timedelta(seconds=VAL),
    python_callable=dela,
    pool='monitoring_jobs_pool',
    provide_context=True,
    dag=dag
)

我正在使用这些任务创建多个 DAG,其中 sla 值取决于一个变量,并且大多数时候由另一段代码获取的这个值(VAL)是 0,我不想这样做监控 SLA,但在其他地方,这将是某个值,如 20、50 或任何其他要监控的值。我应该如何设置 sla 的默认值以跳过 SLA 检查。使用非常大的值来完成同样的事情也会对气流性能产生任何影响。对于 0,我认为 SLA 检查将被跳过,但是任务在 SLA 未命中 UI 中可见,即使 sla 值定义为 0。如果 sla 为零,我不可能错过“sla”关键字。非常感谢 answers/suggestions 解决此问题。

SLA 的默认值为 None(在 BaseOperator 中)

VAL 设置为 0 应该会立即触发 SLA,因为它错过了来自偏移量的 SLA。

你可以实现类似的东西:

task2 = PythonOperator(
    task_id="task_2",
    sla=timedelta(seconds=VAL) if VAL > 0 else None,
    python_callable=dela,
    pool='monitoring_jobs_pool',
    provide_context=True,
    dag=dag
)

如果 VAL 为 0,则跳过 SLA。