🐎 添加任务
本节介绍如何添加下载任务。
✅️️ 创建任务
📌 download()
使用download()方法,可创建一个任务并等待它完成。
当split参数是False,文件不分块,立即使用单线程执行。
当split参数是True,按设置规则分块(默认 50M 每块)进行多线程下载。
| 参数名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|
file_url |
str |
必填 | 文件网址 |
save_path |
strPath |
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 |
strPath |
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()存在data或json参数时,会使用 post 方式进行连接。
不存在这两个参数时,用 get 方式连接。
示例:
📌 连接参数
连接参数即**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 |
strTuple[str, str] |
SSL客户端证书 |
示例:
from DrissionGet import DrissionGet
d = DrissionGet()
h = {'referer': 'demourl.com'}
d.download(url, headers=h)