SFTPoperator获取多个文件

2024-06-08 09:17:20 发布

您现在位置:Python中文网/ 问答频道 /正文

如何使用SFTPOperator从SFTP服务器获取多个文件。 我可以用cloudshell中的bash-MGET来实现这一点,但我不知道要多个SFTPOperator来实现气流


Tags: 文件服务器bashsftp气流cloudshellmgetsftpoperator
2条回答

你不能。SFTPOperator只能在一个文件或目录上工作。见https://github.com/apache/incubator-airflow/blob/master/airflow/contrib/operators/sftp_operator.py

但是,您至少有两个选项:

  • 创建多个任务,每个任务下载一个文件
  • 子类SFTPOperator并实现自己的多文件获取功能

你可以这样做:

files = [
{'name':'file_name',
'connection': 'sftp_conn_one'},

{'name':'file_name',
'connection': 'sftp_conn_two'},

]


d = DummyOperator(task_id='kick_off_dag')

for file in files:
     task = SFTPOperator(
     task_id = 'get_{0}'.format(file['name']),
     ssh_conn_id = file['connection']
     ...
    )

    d >> task

这将为您要获取的每个文件生成一个任务。您甚至可以将此文件列表存储在Airflow Variable

相关问题 更多 >