[英]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.