Skip to content

🐎 添加任务

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

✅️️ 创建任务

📌 download()

使用download()方法,可创建一个任务并等待它完成。

split参数是False,文件不分块,立即使用单线程执行。

split参数是True,按设置规则分块(默认 50M 每块)进行多线程下载。

参数名称 类型 默认值 说明
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 False 是否启用多线程,为None时使用对象设置
show_msg bool None 是否打印下载信息和进度
**kwargs Any requests 的连接参数
返回类型 说明
tuple (任务结果, 任务信息)

download()返回任务结果和信息组成的tuple,第一位是任务结果,第二位是任务信息。如('success', 'D:\files\test.txt')

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

任务结果有以下几种:

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

示例:

from DrissionGet import DrissionGet

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

d.download(url, split=False)  # 单线程下载
d.download(url, split=True)  # 多线程下载

📌 add()

使用add()方法,可添加一个并行任务到队列,当有空闲线程就会下载。

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

参数名称 类型 默认值 说明
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 是否启用多线程分块下载,为None时使用对象设置
**kwargs Any requests 的连接参数
返回类型 说明
Mission 任务对象

示例:

from DrissionGet import DrissionGet

d = DrissionGet()
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)

✅️️ 说明

📌 文件分块并行下载

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

当符合以下条件,分块下载才会执行:

  • split参数为True,或为None且对象分块设置为True
  • 服务器支持分块下载
  • 目标文件大小小于设定的分块大小

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

对象默认分块设置为True,可用set.split()设置。

示例:

from DrissionGet import DrissionGet

d = DrissionGet()
d.set.split(True)  # 启用分块下载
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方式

📌 连接参数

连接参数即**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 DrissionGet import DrissionGet

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