airflow.providers.sftp.hooks.sftp¶
此模块包含 SFTP hook。
类¶
与 SFTP 交互。 |
|
通过 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 字段行为。
- 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_with_attr(path)¶
列出远程系统目录中的文件,包括它们的 SFTP 属性 (SFTPAttributes)。
- 参数:
path (str) – 要列出的远程目录的完整路径
- mkdir(path, mode=511)¶
在远程系统上创建一个目录。
默认模式是
0o777
,但在某些系统上,当前 umask 值可能会首先被屏蔽。
- create_directory(path, mode=511)¶
在远程系统上创建一个目录。
默认模式是
0o777
,但在某些系统上,当前 umask 值可能会首先被屏蔽。与mkdir()
不同,此函数会尝试创建父目录(如果需要),如果目标目录已存在,则静默返回。
- retrieve_file(remote_full_path, local_full_path, prefetch=True)¶
将远程文件传输到本地位置。
如果 local_full_path 是一个字符串路径,文件将被放置在该位置。
- store_file(remote_full_path, local_full_path, confirm=True)¶
将本地文件传输到远程位置。
如果 local_full_path_or_buffer 是一个字符串路径,文件将从该位置读取。
- retrieve_directory(remote_full_path, local_full_path, prefetch=True)¶
将远程目录传输到本地位置。
如果 local_full_path 是一个字符串路径,目录将被放置在该位置。
- retrieve_directory_concurrently(remote_full_path, local_full_path, workers=os.cpu_count() or 2)¶
并发地将远程目录传输到本地位置。
如果 local_full_path 是一个字符串路径,目录将被放置在该位置。
- store_directory(remote_full_path, local_full_path, confirm=True)¶
将本地目录传输到远程位置。
如果 local_full_path 是一个字符串路径,目录将从该位置读取。
- store_directory_concurrently(remote_full_path, local_full_path, confirm=True, workers=os.cpu_count() or 2)¶
并发地将本地目录传输到远程位置。
如果 local_full_path 是一个字符串路径,目录将从该位置读取。
- walktree(path, fcallback, dcallback, ucallback, recurse=True)¶
递归地深度优先遍历
path
处的目录树。这会为每个常规文件、目录和未知文件类型调用离散的回调函数。
- get_tree_map(path, prefix=None, delimiter=None)¶
获取包含文件、目录和未知路径的递归列表的元组。
可以通过提供 prefix 和/或 delimiter 参数来过滤结果。
- test_connection()¶
通过使用目录调用 path 来测试 SFTP 连接。
- get_file_by_pattern(path, fnmatch_pattern)¶
根据给定的 fnmatch 类型模式获取第一个匹配的文件。
- 参数:
path – 要检查的路径
fnmatch_pattern – 将与 fnmatch 匹配的模式
- 返回:
包含找到的第一个文件的字符串,如果未匹配到任何文件,则为空字符串
- 返回类型:
- 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'¶