2016-09-28 276 views
4

我很新手氣流,我們有一個DAG,有3個任務。目前我們正在使用Celery Executor,因爲我們需要靈活性來運行單個任務。我們不想安排工作流程,現在它將成爲手動觸發。有什麼方法可以使用Airflow UI來執行整個工作流程(與我們在oozie中一樣)?使用Airflow UI執行整個DAG

一次執行一個任務很痛苦。

+0

爲了澄清,您是否希望運行第一個任務時運行所有這三項任務? 也請發佈您的相關代碼。 –

+0

如果您設置依賴關係,然後使用'airflow trigger_dag id'從命令行運行dag,問題是什麼? –

+0

是的,你說得對。我們需要在運行第一個任務時運行所有任務。 由於限制,Sry不可能發佈代碼。我們將把DAG交給支持團隊,他們的工作將是手動觸發工作流程。由於他們沒有太多的命令行經驗,我們需要通過UI來執行它。 – user1432155

回答

0

我會試一試,希望你可以調整你的代碼來處理這個問題。

default_args = { 
'owner': 'airflow', 
'depends_on_past': False, 
'start_date': datetime(2015, 6, 1), 
'email': ['[email protected]'], 
'email_on_failure': False, 
'email_on_retry': False, 
'retries': 1, 
'retry_delay': timedelta(minutes=5), 
# 'queue': 'bash_queue', 
# 'pool': 'backfill', 
# 'priority_weight': 10, 
# 'end_date': datetime(2016, 1, 1), 
} 

dag = DAG('your_dag', default_args=default_args) 

#start of your tasks 

first_task = BashOperator(task_id='print_date', 
          bash_command='python script1_name args', 
          dag=dag) 
second_task = BashOperator(task_id='print_date', 
          bash_command='python script2_name args', 
          dag=dag) 
third_task = BashOperator(task_id='print_date', 
          bash_command='python script_name args', 
          dag=dag) 

#then set the dependencies 
second_task.set_upstream(first_task) 
third_task.set_upstream(second_task) 

然後,當您觸發DAG時,所有三個任務將按順序運行。如果這些任務是而不是彼此依賴,則可以從腳本中刪除set_upstream()行。請注意,所有這些任務必須位於同一個腳本中才能使用一個命令運行。

+3

我很感謝您爲回答所付出的時間和精力。但如前所述,我想通過Airflow儀表板運行它。我不想通過命令提示符或使用調度機制來觸發此工作流程。有沒有像點擊按鈕的機制,它會按照提到的順序運行dag。 – user1432155

+0

另外,你可能要導入的幾件事情:從日期時間日期時間進口 ''' 從氣流導入DAG 從airflow.operators.bash_operator進口BashOperator ,timedelta ''' – cantdutchthis

4

氣流1.8和更高的有上看起來像一個播放按鈕的儀表板的每個DAG按鈕:

play button

在舊版本的氣流,可​​以使用對話框中找到在:

Browse -> Dag Runs -> Create

任何一個人都應該從UI中啓動一個dag。

相關問題