流量消耗器(刷下行流量)Traffic Consumer,支持docker(x86)部署
流量消耗器 (Traffic Consumer)
一个简单高效的流量消耗工具,用于测试网络带宽和流量消耗。支持命令行模式和Web UI模式。
功能特点
- 双模式操作: 支持传统的命令行界面和全新的Web UI界面。
- Web UI: 通过浏览器轻松配置和监控流量消耗任务,实时查看状态、日志和线程详情。
- 多线程下载: 默认8线程,可自定义线程数。
- 多URL支持: 支持多个下载源,提高稳定性和速度。
- 智能URL选择: 支持随机和轮询两种URL选择策略。
- 内存下载: 不缓存到硬盘,纯内存操作。
- 速度控制: 可配置下载速度限制。
- 流量统计: 实时显示流量消耗和URL使用情况。
- 定时执行: 支持Cron表达式和间隔时间。
- 灵活控制: 支持设置持续时间、下载次数或流量限制。
- 配置管理: 保存和加载配置,支持多套配置方案。
- 跨平台: 支持Windows和Linux平台。
- Docker部署: 提供Docker镜像,一键部署。
安装与使用
Docker 部署(推荐)
使用Docker是部署和运行流量消耗器最简单的方法。
拉取镜像
1 | docker pull baitaotao521/traffic_consumer:latest |
开机自启动
1 | docker run -d -p 5001:5001 --name traffic_consumer --restart unless-stopped baitaotao521/traffic_consumer |
如果容器已经运行了怎么办?
如果你已经用最初的命令运行了容器,可以通过 docker update
命令来添加或修改其重启策略,不需要删除和重建容器:
停止旧容器(如果它正在运行):
1
docker stop traffic_consumer
更新它的重启策略为
unless-stopped
:1
docker update --restart unless-stopped traffic_consumer
启动容器:
1
docker start traffic_consumer
现在,这个容器就会在系统重启后自动启动了。
运行容器
Web UI 模式 (默认)
1 | # 运行并在后台启动,将容器的5001端口映射到主机的5001端口 |
命令行模式
1 | # 使用 --no-gui 参数启动命令行模式 |
管理容器
查看日志:
1
2
3
4
5# 实时查看Web UI模式的日志
docker logs -f traffic_consumer
# 实时查看命令行模式的日志
docker logs -f traffic_consumer_cli停止容器:
1
docker stop traffic_consumer
启动容器:
1
docker start traffic_consumer
删除容器:
1
2# 删除前请先停止容器
docker rm traffic_consumer
数据持久化
默认情况下,容器内的配置和统计数据是临时的,当容器被删除后数据会丢失。为了持久化保存数据,您可以将主机的目录挂载到容器的 /root/.traffic_consumer
目录。
1 | # 在Linux/macOS上创建本地目录 |
Windows用户请注意: 在
cmd
中,使用%USERPROFILE%\.traffic_consumer_data
代替~/.traffic_consumer_data
。 在PowerShell
中,使用$HOME\.traffic_consumer_data
。
这样,即使容器被删除和重建,您的配置和历史统计数据依然会保留在本地目录中。
本地运行
1. 克隆仓库
1 | git clone https://github.com/baitaotao521/traffic_consumer.git |
2. 安装依赖
1 | pip install -r requirements.txt |
3. 运行
Web UI 模式 (默认)
1 | python traffic_consumer.py |
命令行模式
1 | python traffic_consumer.py --no-gui [其他参数] |
命令行参数
1 | usage: traffic_consumer.py [-h] [-u URLS [URLS ...]] [--url-strategy {random,round_robin}] [-t THREADS] [-l LIMIT] [-d DURATION] [-c COUNT] [--cron CRON] [--traffic-limit TRAFFIC_LIMIT] [--interval INTERVAL] [--config CONFIG] [--save-config] |
Web UI 使用指南
Web UI 提供了一个美观且功能强大的图形化界面,让您可以更直观地配置和监控流量消耗任务。界面主要分为左右两个部分。
左侧:核心仪表盘
这是任务控制和状态监控的核心区域。
- 状态: 显示任务是“运行中”还是“已停止”。
- 实时数据
- 实时速度: 当前总下载速度。
- 总消耗: 本次任务已消耗的总流量。
- 下载数: 已完成的下载请求次数。
- 配置加载
- 通过下拉菜单快速选择并加载已保存的配置。
- 控制按钮
- 启动: 使用当前选定或编辑器中的配置来启动任务。
- 停止: 立即停止当前正在运行的任务。
- 停止计划: 如果任务是通过调度器(Cron或间隔)启动的,此按钮可以停止未来的计划任务,但不会影响当前正在运行的任务。
右侧:信息中心
右侧包含一个实时速度图和带有多个选项卡的信息面板。
1. 实时速度图
一个动态图表,可视化展示最近30秒的下载速度变化趋势。
2. 信息选项卡
调度与历史:
- 调度状态: 查看当前是否有计划任务,以及下次运行的时间和倒计时。
- 执行历史: 一个可滚动的表格,显示最近50次任务的执行记录,包括时间、结果和消耗的流量。
配置编辑器: 这是创建和修改任务配置的核心区域,布局清晰,分为几个部分:
配置名称: 为您的配置命名,方便保存和识别。
URLs: 输入一个或多个下载链接,每行一个。
https://img.alicdn.com/imgextra/i1/O1CN01xA4P9S1JsW2WEg0e1_!!6000000001084-2-tps-2880-560.png
https://issuecdn.baidupcs.com/issue/netdisk/apk/BaiduNetdiskSetup_wap_share.apk
https://wwwstatic.vivo.com.cn/vivoportal/files/resource/funtouch/1651200648928/images/os2-jude-video.mp4
https://img.cmvideo.cn/publish/noms/2022/10/14/1O3VIGPVP6HTS.jpg
https://img.mcloud.139.com/material_prod/material_media/20221128/1669626861087.png
https://vod-origin-rjzy.gdoss.xstore.ctyun.cn/07da9eb52ad948c7b58b760003c0006b.mp4基础设置
- 线程数: 设置并发下载的线程数量。
- 限速 (MB/s): 设置总下载速度上限,0表示无限制。
停止条件 (任一满足即停止)
- 流量 (MB): 任务消耗的总流量上限。
- 时长 (秒): 任务运行的总时长。
- 下载数: 总下载文件次数。
调度设置 (二选一)
- 间隔 (分钟): 设置任务循环执行的间隔。
- Cron 表达式: 使用Cron语法设置更灵活的定时启动,提供常用预设和实时预览功能。
保存配置: 点击按钮将当前编辑器中的配置保存起来。
实时日志: 一个强大的日志查看器,用于调试和监控任务的详细过程。
- 日志开关: 默认关闭,需要手动开启才会从后端接收并显示日志,以节省浏览器资源。
- 彩色输出: 能够解析并显示带有 ANSI 颜色的日志,使输出更具可读性。
- 自动滚动: 新的日志会自动显示在底部,并使面板滚动到最新位置。
- 清空按钮: 快速清除所有日志。
- 日志条数限制: 为了防止浏览器卡顿,最多保留最新的200条日志。
使用示例
示例 1: 限制速度和时长
以最大 5 MB/s 的速度下载10分钟。
1 | python traffic_consumer.py --limit 5 --duration 600 |
示例 2: 使用指定的URL列表和轮询策略
使用您自己的两个URL,并采用轮询方式选择。
1 | python traffic_consumer.py --urls http://example.com/file1.zip http://example.com/file2.zip --url-strategy round_robin |
示例 3: 保存配置
将当前参数保存为一个名为 daily_test
的配置。
1 | python traffic_consumer.py -t 16 -l 10 --save-config --config daily_test |
示例 4: 加载并运行配置
加载 daily_test
配置并立即开始任务。
1 | python traffic_consumer.py --load-config --config daily_test |
示例 5: 定时任务
每天凌晨3点执行任务。
常用 Cron 表达式推荐:
0 * * * *
- 每小时的第0分钟执行 (即每小时整点)。*/30 * * * *
- 每30分钟执行一次。0 0 * * *
- 每天凌晨0点0分执行。0 9-17 * * 1-5
- 周一至周五,上午9点到下午5点,每小时的第0分钟执行。0 0 1 * *
- 每月1号的凌晨0点0分执行。您可以根据自己的需求调整这些表达式。
1 | python traffic_consumer.py --load-config --config daily_test --cron "0 3 * * *" |
配置管理
该工具支持保存和加载多套配置方案,方便在不同测试场景下快速切换。
配置文件位置
: 所有配置和历史数据都保存在用户主目录下的
1
.traffic_consumer
文件夹内。
- 配置文件:
~/.traffic_consumer/configs.json
- 统计数据:
~/.traffic_consumer/stats.json
- 配置文件:
保存配置: 使用
--save-config
会将命令行中提供的其他参数(如-t
,-l
)以--config
指定的名称保存。加载配置: 使用
--load-config
会加载指定名称的配置并覆盖命令行中的其他参数。列出配置: 使用
--list-configs
查看所有已保存的配置名称。删除配置: 使用
--delete-config
删除一个指定的配置。
注意事项
- 该工具会消耗大量网络流量,请确保您有足够的流量配额。
- 长时间运行可能会导致设备发热,请注意设备温度。
- 请合理使用,避免对网络造成不必要的负担。
- 配置文件和统计数据保存在用户主目录的
.traffic_consumer
文件夹中。