airflow.providers.sftp.hooks.sftp

此模块包含 SFTP hook。

SFTPHook

与 SFTP 交互。

SFTPHookAsync

通过 asyncssh 包与 SFTP 服务器交互。

模块内容

class airflow.providers.sftp.hooks.sftp.SFTPHook(ssh_conn_id='sftp_default', host_proxy_cmd=None, *args, **kwargs)[source]

Bases: airflow.providers.ssh.hooks.ssh.SSHHook

与 SFTP 交互。

此 hook 继承 SSH hook。关于输入参数,请参考 SSH hook。

注意事项:
  • 与 FTPHook 不同,describe_directory 仅返回 size、type 和 modify。它不返回 unix.owner、unix.mode、perm、unix.group 和 unique。

  • 如果没有将 mode 传递给 create_directory,则将以 777 权限创建。

可能在整个过程中发生的错误,但应在下游处理。

为了与 SSHHook 保持一致,首选参数是 “ssh_conn_id”。

参数:

ssh_conn_id (str | None) – sftp 连接 ID

conn_name_attr = 'ssh_conn_id'
default_conn_name = 'sftp_default'
conn_type = 'sftp'
hook_name ='SFTP'
classmethod get_ui_field_behaviour()

返回 SSH 连接的自定义 UI 字段行为。

conn: paramiko.sftp_client.SFTPClient | None = None
ssh_conn_id = 'sftp_default'
get_conn()

打开与远程主机的 SFTP 连接。

close_conn()

关闭 SFTP 连接。

get_managed_conn()

使用后关闭连接的上下文管理器。

get_conn_count()

获取打开的连接数。

describe_directory(path)

获取远程系统目录中的文件信息。

返回格式为 {filename: {attributes}}。远程系统支持 MLSD 命令。

参数:

path (str) – 远程目录的完整路径

list_directory(path)

列出远程系统目录中的文件。

参数:

path (str) – 要列出的远程目录的完整路径

list_directory_with_attr(path)

列出远程系统目录中的文件,包括它们的 SFTP 属性 (SFTPAttributes)。

参数:

path (str) – 要列出的远程目录的完整路径

mkdir(path, mode=511)

在远程系统上创建一个目录。

默认模式是 0o777,但在某些系统上,当前 umask 值可能会首先被屏蔽。

参数:
  • path (str) – 要创建的远程目录的完整路径

  • mode (int) – 目录八进制模式的整数权限

isdir(path)

检查提供的路径是否为目录。

参数:

path (str) – 要检查的远程目录的完整路径

isfile(path)

检查提供的路径是否为文件。

参数:

path (str) – 要检查的远程文件的完整路径

create_directory(path, mode=511)

在远程系统上创建一个目录。

默认模式是 0o777,但在某些系统上,当前 umask 值可能会首先被屏蔽。与 mkdir() 不同,此函数会尝试创建父目录(如果需要),如果目标目录已存在,则静默返回。

参数:
  • path (str) – 要创建的远程目录的完整路径

  • mode (int) – 目录八进制模式的整数权限

delete_directory(path, include_files=False)

删除远程系统上的一个目录。

参数:

path (str) – 要删除的远程目录的完整路径

retrieve_file(remote_full_path, local_full_path, prefetch=True)

将远程文件传输到本地位置。

如果 local_full_path 是一个字符串路径,文件将被放置在该位置。

参数:
  • remote_full_path (str) – 远程文件的完整路径

  • local_full_path (str) – 本地文件的完整路径或类似文件的缓冲区

  • prefetch (bool) – 控制是否执行预取(默认值:True)

store_file(remote_full_path, local_full_path, confirm=True)

将本地文件传输到远程位置。

如果 local_full_path_or_buffer 是一个字符串路径,文件将从该位置读取。

参数:
  • remote_full_path (str) – 远程文件的完整路径

  • local_full_path (str) – 本地文件的完整路径或类似文件的缓冲区

delete_file(path)

删除服务器上的一个文件。

参数:

path (str) – 远程文件的完整路径

retrieve_directory(remote_full_path, local_full_path, prefetch=True)

将远程目录传输到本地位置。

如果 local_full_path 是一个字符串路径,目录将被放置在该位置。

参数:
  • remote_full_path (str) – 远程目录的完整路径

  • local_full_path (str) – 本地目录的完整路径

  • prefetch (bool) – 控制是否执行预取(默认值:True)

retrieve_directory_concurrently(remote_full_path, local_full_path, workers=os.cpu_count() or 2)

并发地将远程目录传输到本地位置。

如果 local_full_path 是一个字符串路径,目录将被放置在该位置。

参数:
  • remote_full_path (str) – 远程目录的完整路径

  • local_full_path (str) – 本地目录的完整路径

  • prefetch – 控制是否执行预取(默认值:True)

  • workers (int) – 用于并发传输的工作进程数(默认值:CPU 数量;如果无法确定,则为 2)

store_directory(remote_full_path, local_full_path, confirm=True)

将本地目录传输到远程位置。

如果 local_full_path 是一个字符串路径,目录将从该位置读取。

参数:
  • remote_full_path (str) – 远程目录的完整路径

  • local_full_path (str) – 本地目录的完整路径

store_directory_concurrently(remote_full_path, local_full_path, confirm=True, workers=os.cpu_count() or 2)

并发地将本地目录传输到远程位置。

如果 local_full_path 是一个字符串路径,目录将从该位置读取。

参数:
  • remote_full_path (str) – 远程目录的完整路径

  • local_full_path (str) – 本地目录的完整路径

  • confirm (bool) – 是否在传输后确认文件大小(默认值:True)

  • workers (int) – 用于并发传输的工作进程数(默认值:CPU 数量;如果无法确定,则为 2)

get_mod_time(path)

获取条目的修改时间。

参数:

path (str) – 远程文件的完整路径

path_exists(path)

远程实体是否存在。

参数:

path (str) – 远程文件或目录的完整路径

walktree(path, fcallback, dcallback, ucallback, recurse=True)

递归地深度优先遍历 path 处的目录树。

这会为每个常规文件、目录和未知文件类型调用离散的回调函数。

参数:
  • path (str) – 要遍历的远程目录根路径,使用 '.' 从 pwd 开始

  • fcallback (callable) – 为常规文件调用的回调函数。(形式:func(str)

  • dcallback (callable) – 为目录调用的回调函数。(形式:func(str)

  • ucallback (callable) – 为未知文件类型调用的回调函数。(形式:func(str)

  • recurse (bool) – 默认值:True - 是否递归

get_tree_map(path, prefix=None, delimiter=None)

获取包含文件、目录和未知路径的递归列表的元组。

可以通过提供 prefix 和/或 delimiter 参数来过滤结果。

参数:
  • path (str) – 将构建树的路径

  • prefix (str | None) – 如果设置,则以 prefix 开头的路径将被添加

  • delimiter (str | None) – 如果设置,则以 delimiter 结尾的路径将被添加

返回:

包含文件、目录和未知项目的列表的元组

返回类型:

tuple[list[str], list[str], list[str]]

test_connection()

通过使用目录调用 path 来测试 SFTP 连接。

get_file_by_pattern(path, fnmatch_pattern)

根据给定的 fnmatch 类型模式获取第一个匹配的文件。

参数:
  • path – 要检查的路径

  • fnmatch_pattern – 将与 fnmatch 匹配的模式

返回:

包含找到的第一个文件的字符串,如果未匹配到任何文件,则为空字符串

返回类型:

str

get_files_by_pattern(path, fnmatch_pattern)

根据给定的 fnmatch 类型模式获取所有匹配的文件。

参数:
  • path – 要检查的路径

  • fnmatch_pattern – 将与 fnmatch 匹配的模式

返回:

包含找到的文件的字符串列表,如果未匹配到任何文件,则为空列表

返回类型:

list[str]

class airflow.providers.sftp.hooks.sftp.SFTPHookAsync(sftp_conn_id=default_conn_name, host='', port=22, username='', password='', known_hosts=default_known_hosts, key_file='', passphrase='', private_key='')

Bases: airflow.hooks.base.BaseHook

通过 asyncssh 包与 SFTP 服务器交互。

参数:
  • sftp_conn_id (str) – 用于连接 SFTP 服务器的 SFTP 连接 ID

  • host (str) – SFTP 服务器的主机名

  • port (int) – SFTP 服务器的端口

  • username (str) – 连接 SFTP 服务器时进行身份验证使用的用户名

  • password (str) – 连接 SFTP 服务器时进行身份验证使用的密码。如果使用密钥文件,可以留空

  • known_hosts (str) – 本地文件系统上 known_hosts 文件的路径。默认为 ~/.ssh/known_hosts

  • key_file (str) – 用于向 SFTP 服务器进行身份验证的客户端密钥文件路径

  • passphrase (str) – 与 key_file 一起用于向 SFTP 服务器进行身份验证的密码

conn_name_attr = 'ssh_conn_id'
default_conn_name = 'sftp_default'
conn_type = 'sftp'[source]
hook_name = 'SFTP'[source]
default_known_hosts = '~/.ssh/known_hosts'[source]
sftp_conn_id = 'sftp_default'[source]
host = ''[source]
port = 22[source]
username = ''[source]
password = ''[source]
known_hosts: bytes | str[source]
key_file = ''[source]
passphrase = ''[source]
private_key = ''[source]
async list_directory(path='')[source]

返回 SFTP 服务器上指定路径的文件列表。

async read_directory(path='')[source]

返回 SFTP 服务器上指定路径的文件及其属性列表。

async get_files_and_attrs_by_pattern(path='', fnmatch_pattern='')[source]

获取指定路径下与模式(例如 *.pdf)匹配的文件及其属性。

如果存在的话。否则,会抛出 AirflowException,以便上游处理以进行延迟。

async get_mod_time(path)[source]

建立 SFTP 异步连接。

查找指定文件路径的最后修改时间,并返回该文件路径的最后修改时间。

该文件路径。

参数:

path (str) – 远程文件的完整路径

此条目有帮助吗?