跳转至

配置指南

littledl 的详细配置选项。

DownloadConfig

下载操作的主要配置类。

from littledl import DownloadConfig

config = DownloadConfig(
    enable_chunking=True,
    max_chunks=16,
    chunk_size=4 * 1024 * 1024,  # 4MB
    buffer_size=64 * 1024,        # 64KB
    timeout=300,
    resume=True,
    verify_ssl=True,
)

配置选项

选项 类型 默认值 说明
enable_chunking bool True 启用多线程分块下载
max_chunks int 16 最大并发分块数
chunk_size int 4MB 每个分块的大小
buffer_size int 64KB 磁盘写入缓冲区大小
timeout float 300 读写超时时间(秒)
resume bool True 启用断点续传
verify_ssl bool True 验证 SSL 证书
fallback_to_single_on_failure bool True 分块失败时自动回退到单连接下载
enable_adaptive bool True 启用自适应网络调度
enable_hybrid_turbo bool True 启用具有 AIMD 拥塞控制和智能重切策略的混合涡轮加速
hybrid_aimd_increase_step int 1 每次增加的并发目标线程数 (加性增)
hybrid_aimd_decrease_factor float 0.5 遇到速度骤降时的并发减少系数 (乘性减)
hybrid_speedup_threshold float 0.08 触发 AIMD 提速的最小相对网络加速阈值
hybrid_slow_chunk_ratio float 0.45 被视为极慢资源块的耗时占比阈值
verify_hash bool False 校验下载文件哈希
expected_hash str None 预期哈希值
hash_algorithm str sha256 校验使用的哈希算法
min_file_size int None 拒绝小于该值的文件
max_file_size int None 拒绝大于该值的文件
progress_update_interval float 0.5 回调刷新间隔(秒)
chunk_callback Callable None 分块下载过程中的分片状态回调

代理配置

from littledl import DownloadConfig, ProxyConfig, ProxyMode

proxy = ProxyConfig(
    mode=ProxyMode.CUSTOM,
    http_proxy="http://proxy.example.com:8080",
    https_proxy="https://proxy.example.com:8080",
)

config = DownloadConfig(proxy=proxy)

速度限制

from littledl import DownloadConfig, SpeedLimitConfig, SpeedLimitMode

speed_limit = SpeedLimitConfig(
    enabled=True,
    mode=SpeedLimitMode.GLOBAL,
    max_speed=1024 * 1024,  # 1 MB/s
)

config = DownloadConfig(speed_limit=speed_limit)

进度回调

progress_callback 支持四种格式:

  • 传统位置参数:(downloaded, total, speed, eta)
  • 事件对象:ProgressEvent
  • 字典载荷:dict
  • 关键字参数:**payload
from littledl import ProgressEvent

def on_progress(downloaded: int, total: int, speed: float, eta: int):
    percent = (downloaded / total) * 100
    print(f"\r{percent:.1f}% | {speed/1024:.1f} KB/s | 剩余: {eta}s", end="")

def on_event(event: ProgressEvent):
    print(event.progress, event.remaining)

def on_dict(payload: dict):
    print(payload["downloaded"], payload["speed"])

def on_kwargs(**payload):
    print(payload["eta"])

config = DownloadConfig(progress_callback=on_progress)

分块状态回调

chunk_callback 仅在分块下载模式下触发,支持与 progress_callback 相同的四种格式。

from littledl import ChunkEvent

def on_chunk(event: ChunkEvent):
    print(event.chunk_index, event.status, event.progress)

config = DownloadConfig(chunk_callback=on_chunk)