[英]How to setup two workers in airflow
我有兩個工人和三個任務。
dag = DAG('dummy_for_testing', default_args=default_args)
t1 = BashOperator(
task_id='print_task1',
bash_command='task1.py',
dag=dag)
t2 = BashOperator(
task_id='print_task2',
bash_command='task2.py',
dag=dag)
t3 = BashOperator(
task_id='print_task3',
bash_command='task3.py',
dag=dag)
t1 >> t2 >> t3
假設我正在執行特定文件上的tasks(t1,t2,t3)
。 當前,所有工作都在一個工作程序上進行,但是我想設置另一個工作程序,該工作程序將接收第一個任務的輸出並執行任務t2,然后執行任務t3。 這樣, queue1
將對下一個文件執行t1
。 我該如何為兩名工人做這項工作。 我正在考慮使用queues
但是不明白如何使queue1
等到queue2
任務t1
完成。
除了啟動這兩個工作程序外,您無需執行任何其他操作,它們將在任務可用時並在配置中定義的並發/並行性約束下拾取任務。
在您給出的示例中,任務可能完全運行一個worker 1
, worker 2
或兩者的混合運行。 這是因為t2
直到t1
完成才開始。 在t1
完成和t2
開始之間的時間內,兩個工作人員都將處於閑置狀態(假設您沒有其他dag在運行)。 在保留要運行的t2
任務中將贏得比賽。
如果您需要在不同的工作線程上運行特定的任務(例如,讓一個或多個工作線程具有更高的可用資源級別或特殊的硬件),則可以在任務級別指定隊列。 隊列不會影響任務的運行順序,因為Airflow調度程序將確保任務沒有運行,直到上游的任務成功運行為止。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.