如何使用Airflow在不同的机器中运行一个工作流程的不同任务?

时间:2017-11-17 12:39:49

标签: airflow apache-airflow

免责声明:我还不是Airflow的用户,今天刚刚发现它并且我开始探索它是否适合我的用例。

我有一个数据处理工作流程,它是多个任务的顺序(非并行)执行。但是,某些任务需要在特定计算机上运行。 Can Air可以管理这个吗?这个用例的建议实现模型是什么?

感谢。

1 个答案:

答案 0 :(得分:5)

是的,您可以使用queues在Airflow中实现此目的。您可以将任务绑定到特定队列。然后,对于计算机上的每个工作人员,您可以将其设置为仅从选定队列中提取任务。

在代码中,它看起来像这样:

task_1 = BashOperator(
    dag=dag,
    task_id='task_a',
    ...
)

task_2 = PythonOperator(
    dag=dag,
    task_id='task_b',
    queue='special',
    ...
)

请注意,airflow.cfg中有此设置:

# Default queue that tasks get assigned to and that worker listen on.
default_queue = default

所以如果你用这个开始你的工人:

Server A> airflow worker
Server B> airflow worker --queues special
Server C> airflow worker --queues default,special

然后,服务器A + C可以获取task_1,服务器B + C可以获取task_2。