运行一个Airflow Operator的多次迭代

时间:2018-01-23 11:35:00

标签: parallel-processing operators airflow

我正在构建一个系统,该系统应该在远程SFTP服务器上列出文件,然后在本地下载文件。我希望这个并行运行,这样我就可以为每个要下载的文件启动一个作业,或者同时下载10个文件。

我是Airflow的新手,仍然没有完全理解一切。我认为应该有一个解决方案来做到这一点,但我无法弄明白。

这是代码,目前我在一个运营商下载所有文件,但据我所知,它没有使用多个工作人员。

def transfer_files():
    for i in range(1, 11): 
        sftp.get(REMOTE_PATH + 'test_{}.csv'.format(i), LOCAL_PATH + 'test_{}.csv'.format(i))

1 个答案:

答案 0 :(得分:1)

假设您正在使用PythonOperator,您可以启动多个PythonOperator,它看起来像这样:

def get_my_file(i):
    sftp.get(REMOTE_PATH + 'test_{}.csv'.format(i), LOCAL_PATH + 'test_{}.csv'.format(i))

def transfer_files():
    for i in range(1, 11):
        task = PythonOperator(
            task_id='test_{}.csv'.format(i),
            python_callable=get_my_file,
            op_args=[i],
            dag=dag)