airflow - 我可以在 Airflow 中拥有不同开始日期的一个 DAG 下的任务吗?
问题描述
我有一个运行两个任务的 DAG:A
和B
.
我没有指定start_date
on DAG 级别,而是将其作为属性添加到运算符(在本例中我使用的是 a PythonOperator
)并将其从 DAG 字典中删除。这两项任务每天都运行。
start_date
forA
是 2013-01-01,forstart_date
是B
2015-01-01。我的问题是 Airflow 从 2013-01-01 开始为任务 A 运行 16 天(因为我猜airflow.cfg
我已经离开了默认值dag_concurrency = 16
),然后它停止了。DAG 处于状态running
,并且 的任务B
处于状态no status
。
显然我做错了什么,我可以简单地设置start_date
on DAG 级别并B
从start_date
of运行A
,但这不是我想要做的。
或者,我可以将它们拆分为单独的 DAG,但同样,这不是我想要监控它们的方式。
有没有办法让 DAG 有多个任务,每个任务都有自己的start_date
?如果是这样,该怎么做?
更新:
我知道ShortCircuitOperator
可以添加 a ,但这似乎仅适用于依赖且存在下游的任务流。在我的情况下A
是独立的B
。
解决方案
使用BranchPythonOperator
并检查您的execution_date >= '2015-01-01' 的任务。如果为 true,则应执行Task B,否则应执行 Dummy Task。
但是,我建议使用单独的 DAG。
关于分支的文档:https ://airflow.readthedocs.io/en/1.10.2/concepts.html#branching
推荐阅读
- amazon-web-services - 使用查询参数的路由规则条件不起作用
- xaml - 慢速垂直滚动列表框
- maven - Gradle 将 RPM 发布到 Nexus Yum Repo 在 sha1 文件上失败
- javascript - 更改所选值时显示输入
- python - 如何在 Django ORM 中按标签列表过滤 Charfiled
- javascript - 如何禁用默认字体列表嵌入 jsPDF?
- java - 如何存储所有输入的数组元素
- webpack-dev-server - webpack-dev-server 在 publicPath: '/' 时使用“webpack-dev-server”作为路径
- python - Python“TypeError:'int'和'NoneType'的实例之间不支持'<'”
- python - 加载 URL 模式而不激活它们?