在特定时间内运行任务

问题描述 投票:0回答:2

我在气流障碍中有3个任务。

这三个任务有时间依赖性

任务1-上午8点

任务-上午2-10点

任务-3-12 am

我没有找到任何有关此的文档。它仅告诉您设置上游或下游作业。有人可以帮忙吗

我正在使用Google CLoud Composer

jenkins airflow airflow-scheduler google-cloud-composer
2个回答
1
投票

好,气流结构被制作成schedule_interval被设置在DAG级别。这意味着您可以设置整个DAG开始执行的时间,但实际上不能为每个task指定不同的执行时间。

如果您有三个相互独立的任务,解决方案是创建三个不同的DAG,并在这三个不同的时间安排它们。


如果相反,task_2task_3的时间依赖性不是那么重要,但您只关心被执行的一个接一个,实际上,您可以设置任务之间的依赖性,以便task_2 task_1完成后总是运行,task_3完成后总是运行task_2。要设置依赖项,您可以使用非常方便的语法(假设您的任务已分配给变量task_1task_2task_3):

task_1 >> task_2 >> task_3

您可以参考Airflow official documentation了解更多信息。


TL; DR:您无法安排单个任务在不同的特定时间运行,因为您可以设置的唯一时间是DAG整体运行一次。


0
投票

气流文档:

https://airflow.apache.org/docs/stable/concepts.html#bitshift-composition

在Airflow 1.8之后,您还可以使用位移合成。

而不是为您的任务设置时间,而是使用这种方法:

op1 = DummyTask(...)
op2 = DummyTask(...)

op1 >> op2 # same as: op1.set_downstream(op2)

上面的分配意味着气流仅在成功完成op2之后才执行op1

© www.soinside.com 2019 - 2024. All rights reserved.