我有一个 DAG“abc”,计划在每天上午 7 点(美国中部标准时间)运行。由于某种原因,我不想运行明天的实例。我怎样才能跳过那个特定的实例。有什么方法可以使用命令行来做到这一点吗?感谢对此的任何帮助。
我相信您可以在 UI 中的“浏览”->“DAG 运行”->“创建”下抢占为未来日期创建 DAG 运行,将其初始化为成功(或失败)状态,这应该可以防止调度程序在以下情况下创建新的运行:时间到了。我认为您也可以使用 trigger_dag 在 CLI 上执行此操作,但您只需要单独更新其状态,因为它会默认为运行。
我认为您可以将 start_date 设置为后天或您希望 dag 运行的任何日期,只要是将来的日期即可。但时间表间隔将保持不变,每早上 7 点。您可以在 Default_Args 中开始日期
您可以创建一个 Start 任务作为
ShortCircuitOperator
,如果您想跳过 DAG 运行 - 只需从 python_callable 返回 False 即可。它将把任务标记为 SKIPPED 并阻止下游任务运行。
好处:
您将明确看到所有以这种方式跳过的 DAG 在树视图中运行
可以检查日志中的特定原因(如果可能有多个)
能够在需要时强制 Dag 运行..
def start_product(execution_date, ti) -> bool:
返回布尔值(
使用 DAG('MyDag', ... ) 作为 dag:
start = ShortCircuitOperator(
task_id='start',
python_callable=start_production,
op_kwargs=parameters,
dag=dag
)
...
start >> [rest_of_dag_tasks]