2017-04-02 67 views
3

我有一个task_a,我想在DAG_1和DAG_2中使用。这是可能的气流?在气流中是否可以在多个DAGS中使用单个任务?

task_a = SomeOperator(
task_id='some_id', 
bash_command='some_command', 
#instead of just 
dag= DAG_1 # I want to assign this task to multiple dags 
#dag=assign_multiple_dags_here(DAG_1 and DAG_2) 
) 

这可能吗?

回答

2

你总是可以做一些与partial,然后将其分配到2分不同的DAG:

from functools import partial 
task_template = partial(SomeOperator, some_id='id', some_command='cmd') 
task_template(dag=dag1) 
task_template(dag=dag2) 

,你也可以只创建一个具有它的功能:

def create_task(dag): 
    return SomeOperator(some_id='id', some_command='cmd', dag=dag) 

for d in (dag1, dag2): 
    create_task(d) 
+1

我提出了你的建议使用部分。我喜欢它作为解决方法。 – javed

2

根据当前设计no。

任务是DAG的一部分。每个DAG运行都会创建一个任务实例。

这是保持框架的看家简单

相关问题