Skip to content

🐎 添加任务

本节介绍如何添加下载任务。

✅️️ 创建任务

📌 单线程任务

使用download()方法,可创建单线程阻塞式任务。

即使遇到大文件,download()也只有一个线程执行下载,不会分块。

该方法会在文件下载完成后才让程序继续往下运行。

download()返回任务结果和信息组成的tuple,第一位是任务结果,第二位是任务信息。

如果下载成功,任务信息返回文件路径,如果失败,返回失败原因。

任务结果有以下几种:

  • 'success':下载成功
  • 'skipped':已跳过
  • 'canceled':被取消
  • False:任务失败

示例:

from DownloadKit import DownloadKit

d = DownloadKit()
url = 'https://gitee.com/static/images/logo-black.svg'

d.download(url)

📌 多线程并发任务

使用add()方法,可添加并发任务。

add()方法返回Mission对象,可以用于任务管理,在任务管理章节介绍。

示例:

from DownloadKit import DownloadKit

d = DownloadKit()
url1 = 'https://gitee.com/static/images/logo-black.svg'
url2 = 'https://gitee.com/static/images/logo-black.svg'

m1 = d.add(url1)
m2 = d.add(url2)

📌 多线程阻塞式任务

如果想使用多线程下载大文件,且需要在这个文件下载完再执行后面的语句,可以在add()后面使用wait()方法,可创建单线程阻塞式任务。

wait()方法有show_msg参数,可指定是否打印下载进度。

示例:

from DownloadKit import DownloadKit

d = DownloadKit()
url = 'https://gitee.com/static/images/logo-black.svg'

d.add(url).wait(show_msg=False)

📌 大文件分块并行下载

除了多个任务并行执行,单个文件也可以分为多个子任务分块同时下载。

add()方法的split参数可以设置是否启用分块下载,默认为True

除了split参数,还需符合两个条件,分块下载才会执行:

  • 服务器支持分块下载

  • 目标文件大小小于设定的分块大小

分块大小默认为 50MB,可用set.block_size()设置。

示例:

from DownloadKit import DownloadKit

d = DownloadKit()
d.set.block_size('30m')
url = 'https://dldir1.qq.com/qqfile/qq/TIM3.4.8/TIM3.4.8.22086.exe'

d.add(url)  # 默认启用分块下载
d.add(url, split=False)  # 禁用分块下载

📌 post 方式

download()add()存在datajson参数时,会使用 post 方式进行连接。

不存在这两个参数时,用 get 方式连接。

示例:

data = {'abc': 123}
d.download(url, data=data)  # 自动采用post方式

✅️️ 任务参数

download()add()方法参数基本一致,有微小差别。

📌 download()

参数名称 类型 默认值 说明
file_url str 必填 文件网址
save_path str
Path
None 保存路径,为None时保存到当前文件夹
rename str None 指定文件另存的名称,可不带后缀,程序会自动补充
suffix str None 如文件名带'.',或要修改后缀,可设置此参数,如传入'',会删掉原有后缀
file_exists str None 遇到同名文件时的处理方式,可选'skip', 'overwrite', 'rename', 'add'(缩写's', 'o', 'r', 'a'),默认跟随实例属性
show_msg bool True 是否打印下载信息和进度
**kwargs Any requests 的连接参数

📌 add()

参数名称 类型 默认值 说明
file_url str 必填 文件网址
save_path str
Path
None 保存路径,为None时保存到当前文件夹
rename str None 指定文件另存的名称,可不带后缀,程序会自动补充
suffix str None 如文件名带'.',或要修改后缀,可设置此参数,如传入'',会删掉原有后缀
file_exists str None 遇到同名文件时的处理方式,可选'skip', 'overwrite', 'rename', 'add'(缩写's', 'o', 'r', 'a'),默认跟随实例属性
split bool None 是否启用多线程分块下载,默认跟随实例属性
**kwargs Any requests 的连接参数

📌 连接参数

连接参数即**kwargs允许接收到参数,与 requests 的get()方法一致。

参数名称 类型 说明
timeout float 连接超时时间
params dict 查询参数字典
headers dict headers
cookies Any cookies
data Any data 数据
json Any json 数据
files Any 文件数据
auth Tuple[str, str]
HTTPBasicAuth
认证元组或对象
allow_redirects bool 是否允许自动跳转
proxies dict 代理 ip
hooks dict 回调方法
verify bool 是否验证SSL证书
cert str
Tuple[str, str]
SSL客户端证书

示例:

from DownloadKit import DownloadKit

d = DownloadKit()
h = {'referer': 'demourl.com'}
d.download(url, headers=h)