我正在构建一个系统,该系统应该在远程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))
答案 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)