2017-04-02 65 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運行都會創建一個任務實例。

這是保持框架的看家簡單

相關問題