多线程下载器
source link: https://windard.com/blog/2018/07/31/Multiple-Downloader
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
多线程下载器
2018-07-31
多线程下载器,常用的下载工具有 Chrome,wget,curl,种子下载器,迅雷等,能用,但总是觉得不够好用。
2021-03-08 填坑
常见的下载场景,使用 curl,wget 一般也能够满足需求,在多线程下载的时候使用 axel 也可以做多线程下载,但是由于网络因素,或者重重原因,axel 也是偶尔抽风,下载超慢,不如自己动手,丰衣足食。
filedown
使用 Python 实现的多线程下载器,开始使用的多线程,但是不好控制,后面改用线程池。
下载效果还可以,超时异常,失败重试,GitHub 地址
已经上传到 pypi 源,可以直接安装使用,兼容 python2 和 python3.
pip install filedown
安装之后有两个下载命令,差异不大,一般使用后者。
$ filedown -h
Usage: filedown [OPTIONS] URL
Options:
--thread / --process Use ThreadPool or ProcessPool
-w, --worker_num INTEGER Number of workers
-s, --chunk_size INTEGER Chunk size of each piece
-c, --timeout INTEGER Timeout for chunk download
-f, --filename TEXT Filename of download
-h, --headers TEXT Headers to get file
-c, --cookies TEXT Cookie to get file
-p, --proxies TEXT Proxy to get file, pip install "requests[socks]"
-h, --help Show this message and exit.
$ concurrent_download -h
Usage: concurrent_download [OPTIONS] URL
Options:
-h, --help Show this message and exit.
-n, --num INTEGER thread number
-c, --chunk INTEGER chunk download size
-t, --timeout INTEGER chunk download timeout
concurrent.download
使用 Java 实现的多线程下载器,同样是线程池实现,做的很简单。
使用 maven 导入
<dependency>
<groupId>com.windard.me</groupId>
<artifactId>concurrent.download</artifactId>
<version>1.1-SNAPSHOT</version>
</dependency>
使用 jar 下载
$ java -jar concurrent.download-1.1-SNAPSHOT.jar
Usage: java -jar downloader.jar http://xxx.com/test.file
godown
使用 Golang 实现,没想到 Golang 的性能这么好。
GoDown: Goroutine Download For Golang
😂,所以名字里的 Go 并不是指 Golang,而是指 Goroutine。
实现了静态文件服务器和下载器的功能,还可以传入 URL 离线下载。
在下载器的部分,超时重试,使用 channel 做并发控制,保持 Goroutine 数量。
本人现在一般常用的也是这款,功能多样,性能强悍。
go install github.com/windard/godown
$ godown -h
NAME:
GoDown - Goroutine Download For Golang
USAGE:
godown [global options] command [command options] argument
VERSION:
0.2.0
COMMANDS:
download, d download from server
server, s start static server
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--help, -h show help (default: false)
--version, -v print the version (default: false)
本文固定链接:https://windard.com/blog/2018/07/31/Multiple-Downloader
原创文章,转载请注明出处:多线程下载器 By Windard
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK