HiveNetFileTransfer.protocol module¶
文件传输协议模块
- class HiveNetFileTransfer.protocol.LocalProtocol(src_file: Union[str, FileIO], dest_file: str, is_resume: bool = True, is_overwrite: bool = False, thread_num: int = 1, block_size: int = 4096, cache_size: int = 1024, auto_expand: bool = True, **kwargs)[源代码]¶
基类:
ProtocolFw本地文件传输至本地的传输协议(复制)
- __init__(src_file: Union[str, FileIO], dest_file: str, is_resume: bool = True, is_overwrite: bool = False, thread_num: int = 1, block_size: int = 4096, cache_size: int = 1024, auto_expand: bool = True, **kwargs)[源代码]¶
初始化文件传输协议类
注: 实现类必须在初始化中完成目标端 TransferSaver 的初始化处理
- 参数
src_file (str|FileIO) – 源文件路径或已打开的文件句柄
dest_file (str) – 目标文件路径
is_resume (bool) – default=True, 指定是否续传(自动查找已下载的信息), 如果不指定续传将自动删除原来已下载临时文件
is_overwrite (bool) – default=False, 是否覆盖已有文件, 如果为否, 则目标文件已存在的情况下抛出异常
thread_num (int) – default=1, 写入处理线程数量
block_size (int) – default=4096, 每次传输块大小, 单位为byte
cache_size (int) – default=1024, 单线程缓存大小, 单位为kb(注意: 真实缓存大小还需要乘以处理线程数量)
auto_expand (bool) – default=True, 是否自动扩展文件大小(否则在初始化时会自动创建指定大小的文件)
扩展参数 (-) –
重载类自行扩展处理所需的参数 (kwargs) –
- close_file(index: int, is_force: bool = False)[源代码]¶
关闭打开的文件
- 参数
index (int) – 要关闭的文件对象对应的处理线程索引
is_force (bool) – default=False, 指示是否强制关闭
- close_writer(index: int, is_force: bool = False)[源代码]¶
关闭打开的写入对象
- 参数
index (int) – 要关闭的写入对象对应的处理线程索引
is_force (bool) – default=False, 指示是否强制关闭
- property file_size: int¶
获取传输文件大小
@property {int}
- get_saver_info() dict[源代码]¶
获取数据保存信息
- 返回
已保存的信息字典
{
‘file_size’: -1, # 要接收的文件大小, -1 代表不确定文件实际大小
’write_size’: 0, # 已写入的数据大小
’md5’: ‘’, # 文件的md5值
}
- 返回类型
dict
- open_file(index: int = 0)[源代码]¶
打开文件并返回文件对象
- 参数
index (int) – default=0, 当前的数据处理线程索引
- 返回
打开的文件对象属性字典
{‘handle’: FileIO, ‘close_able’: 是否可关闭, lock: 锁对象}
- 返回类型
dict
- open_writer(index: int = 0) dict[源代码]¶
打开写入对象并返回对象属性
- 参数
index (int) – default=0, 当前的数据处理线程索引
- 返回
打开的文件对象属性字典
{‘handle’: 写入对象, ‘close_able’: 是否可关闭, lock: 锁对象}
- 返回类型
dict
- read_file_data(index: int, handle: FileIO, start: int, size: int, lock: RLock) bytes[源代码]¶
获取文件指定位置数据
- 参数
index (int) – 处理读取的线程索引
handle (object) – 打开的文件句柄
start (int) – 要获取的数据开始位置
size (int) – 要获取的数据大小
lock (threading.RLock) – 读取数据的锁对象
- 返回
获取到的数据字典
注: 如果开始位置超过文件大小, 将返回b’’; 如果要获取的数据大小超过文件, 则返回真实的数据大小
对于无法预知文件大小的情况, 如果返回b’’也代表着文件结束
- 返回类型
bytes
- write_data(handle, lock: RLock, index: int = 0, start: int = None, size: int = None, data: bytes = None) dict[源代码]¶
写入文件
- 参数
handle (object) – 写入对象
lock (threading.RLock) – 锁定写入操作的锁对象
index (int) – default=0, 指定写入数据的线程索引
start (int) – default=None, 数据在文件的开始位置, 如果传空代表请求该线程索引对应的获取任务信息
size (int) – default=None, 传入数据的长度
data (bytes) – default=None, 传入数据字节数组
- 返回
返回下一个任务要获取的信息字典, 格式为:
{
‘status’: 0, # 状态, 0-成功, 1-开始位置与线程缓存不一致, 2-全部下载完成, 3-文件md5校验失败
’index’: 0, # 当前线程索引
’start’: -1, # 开始位置, 如果传入-1代表该线程已无获取任务
’size’: 0, # 要获取数据的大小
}
- 返回类型
dict
- class HiveNetFileTransfer.protocol.ProtocolFw(src_file: str, dest_file: str, is_resume: bool = True, is_overwrite: bool = False, thread_num: int = 1, block_size: int = 4096, cache_size: int = 1024, auto_expand: bool = True, **kwargs)[源代码]¶
基类:
object文件传输协议框架
- __init__(src_file: str, dest_file: str, is_resume: bool = True, is_overwrite: bool = False, thread_num: int = 1, block_size: int = 4096, cache_size: int = 1024, auto_expand: bool = True, **kwargs)[源代码]¶
初始化文件传输协议类
注: 实现类必须在初始化中完成目标端 TransferSaver 的初始化处理
- 参数
src_file (str) – 源文件信息
dest_file (str) – 目标文件信息
is_resume (bool) – default=True, 指定是否续传(自动查找已下载的信息), 如果不指定续传将自动删除原来已下载临时文件
is_overwrite (bool) – default=False, 是否覆盖已有文件, 如果为否, 则目标文件已存在的情况下抛出异常
thread_num (int) – default=1, 写入处理线程数量
block_size (int) – default=4096, 每次传输块大小, 单位为byte
cache_size (int) – default=1024, 单线程缓存大小, 单位为kb(注意: 真实缓存大小还需要乘以处理线程数量)
auto_expand (bool) – default=True, 是否自动扩展文件大小(否则在初始化时会自动创建指定大小的文件)
扩展参数 (-) –
重载类自行扩展处理所需的参数 (kwargs) –
- close_file(index: int, is_force: bool = False)[源代码]¶
关闭打开的文件
- 参数
index (int) – 要关闭的文件对象对应的处理线程索引
is_force (bool) – default=False, 指示是否强制关闭
- close_writer(index: int, is_force: bool = False)[源代码]¶
关闭打开的写入对象
- 参数
index (int) – 要关闭的写入对象对应的处理线程索引
is_force (bool) – default=False, 指示是否强制关闭
- property file_size: int¶
获取传输文件大小
@property {int}
- get_saver_info() dict[源代码]¶
获取数据保存信息
- 返回
已保存的信息字典
{
‘file_size’: -1, # 要接收的文件大小, -1 代表不确定文件实际大小
’write_size’: 0, # 已写入的数据大小
’md5’: ‘’, # 文件的md5值
}
- 返回类型
dict
- open_file(index: int = 0)[源代码]¶
打开文件并返回文件对象
- 参数
index (int) – default=0, 当前的数据处理线程索引
- 返回
打开的文件对象属性字典
{‘handle’: FileIO, ‘close_able’: 是否可关闭, lock: 锁对象}
- 返回类型
dict
- open_writer(index: int = 0) dict[源代码]¶
打开写入对象并返回对象属性
- 参数
index (int) – default=0, 当前的数据处理线程索引
- 返回
打开的文件对象属性字典
{‘handle’: 写入对象, ‘close_able’: 是否可关闭, lock: 锁对象}
- 返回类型
dict
- read_file_data(index: int, handle, start: int, size: int, lock: RLock) bytes[源代码]¶
获取文件指定位置数据
- 参数
index (int) – 处理读取的线程索引
handle (object) – 打开的文件句柄
start (int) – 要获取的数据开始位置
size (int) – 要获取的数据大小
lock (threading.RLock) – 读取数据的锁对象
- 返回
获取到的数据字典
注: 如果开始位置超过文件大小, 将返回b’’; 如果要获取的数据大小超过文件, 则返回真实的数据大小
对于无法预知文件大小的情况, 如果返回b’’也代表着文件结束
- 返回类型
bytes
- write_data(handle, lock: RLock, index: int = 0, start: int = None, size: int = None, data: bytes = None) dict[源代码]¶
写入文件数据
- 参数
handle (object) – 写入对象
lock (threading.RLock) – 锁定写入操作的锁对象
index (int) – default=0, 指定写入数据的线程索引
start (int) – default=None, 数据在文件的开始位置, 如果传空代表请求该线程索引对应的获取任务信息
size (int) – default=None, 传入数据的长度
data (bytes) – default=None, 传入数据字节数组
- 返回
返回下一个任务要获取的信息字典, 格式为:
{
‘status’: 0, # 状态, 0-成功, 1-开始位置与线程缓存不一致, 2-全部下载完成, 3-文件md5校验失败
’index’: 0, # 当前线程索引
’start’: -1, # 开始位置, 如果传入-1代表该线程已无获取任务
’size’: 0, # 要获取数据的大小
}
- 返回类型
dict