airflow - Apache Airflow 不强制执行 dagrun_timeout
问题描述
我正在使用带有顺序执行器的 Apache Airflow 版本 1.10.3,如果 DAG 尚未完成,我希望 DAG 在一定时间后失败。我尝试dagrun_timeout
在示例代码中设置
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime, timedelta
default_args = {
'owner': 'me',
'depends_on_past': False,
'start_date': datetime(2019, 6, 1),
'retries': 0,
}
dag = DAG('min_timeout', default_args=default_args, schedule_interval=timedelta(minutes=5), dagrun_timeout = timedelta(seconds=30), max_active_runs=1)
t1 = BashOperator(
task_id='fast_task',
bash_command='date',
dag=dag)
t2 = BashOperator(
task_id='slow_task',
bash_command='sleep 45',
dag=dag)
t2.set_upstream(t1)
slow_task
单独需要超过 设置的时间限制dagrun_timeout
,所以我的理解是气流应该停止 DAG 执行。但是,这不会发生,slow_task 被允许在其整个持续时间内运行。发生这种情况后,运行会被标记为失败,但这不会根据需要终止任务或 DAG。使用execution_timeout
forslow_task
确实会导致任务在指定的时间限制内被终止,但我更愿意为 DAG 使用总体时间限制,而不是execution_timeout
为每个任务指定。
还有什么我应该尝试实现这种行为的,或者我可以修复的任何错误吗?
解决方案
推荐阅读
- amazon-sqs - 订阅 SNS 时,AWS 是否向 SQS 传递较旧的消息
- python - 针对fuzzywuzzy列表的Python多处理
- python - 为文件夹中的每个文件夹创建一个数据框(wav 文件)
- windows - 递归删除一些没有特定扩展名的文件
- android - 来自命令行和 Android Studio 的 Android Lint 不匹配
- java - Android 单击并按住以删除项目
- spring-boot - Spring MVC - MockHttpServletResponse 将字符集添加到 Content-Type - 如何禁用它?
- eloquent - 为什么在编辑其中一个可变形模型的实例时,我的 morphTo 表中会出现重复条目?
- javascript - 日期字符串到日期对象的转换
- haskell - 如何正确调用 Data.OTP 中的 TOTP Func?