免责声明:我还不是Airflow的用户,今天刚刚发现它并且我开始探索它是否适合我的用例。
我有一个数据处理工作流程,它是多个任务的顺序(非并行)执行。但是,某些任务需要在特定计算机上运行。 Can Air可以管理这个吗?这个用例的建议实现模型是什么?
感谢。
答案 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。