python使用speedtest测速
python编写测速程序
1.安装speedtest-cli
注意是安装speedtest-cli,而不是speedtest,如果安装了speedtest,请先卸载。
运行:pip install speedtest-cli
我安装的是2.1.3版本
2.代码示例 - 简单使用
import speedtest
# 创建 Speedtest 对象
st = speedtest.Speedtest()
# 获取服务器列表并选择最佳服务器
st.get_servers()
# 选择最佳服务器
best = st.get_best_server()
# 测试下载速度
download_speed = st.download()
# 测试上传速度
upload_speed = st.upload()
# 将速度从比特转换为兆比特
download_speed_mbps = download_speed / 1024 / 1024
upload_speed_mbps = upload_speed / 1024 / 1024
# 打印结果
print(f"下载速度:{download_speed_mbps:.2f} Mbps")
print(f"上传速度:{upload_speed_mbps:.2f} Mbps")
输出结果:
下载速度:2.22 Mbps
上传速度:6.88 Mbps
3.代码示例 - 不间断测速
import logging
import logging.config
import speedtest
from datetime import datetime
# 配置日志
logging.basicConfig(
level=logging.INFO, # 设置日志级别为 INFO
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler('./myapp.log'), # 日志文件路径
logging.StreamHandler() # 同时输出到控制台
]
)
# 创建一个日志记录器
logger = logging.getLogger(__name__)
def test_speed():
# 创建 Speedtest 对象
st = speedtest.Speedtest()
while True:
logger.info(f"{datetime.now()}获取服务器列表")
st.get_servers() # 获取服务器列表并选择最佳服务器
logger.info(f"{datetime.now()}获取最佳服务器")
best = st.get_best_server() # 使用最佳服务器
logger.info(f"{datetime.now()}已经找到服务器,{best}")
logger.info(f"{datetime.now()}开始测试下载速度")
download_speed = st.download() # 测试下载速度
logger.info(f"{datetime.now()}开始测试上传速度")
upload_speed = st.upload() # 测试上传速度
# 将速度从比特转换为兆比特
download_speed_mbps = download_speed / 1024 / 1024
upload_speed_mbps = upload_speed / 1024 / 1024
# 打印结果
logger.info(f"下载速度:{download_speed_mbps:.2f} Mbps")
logger.info(f"上传速度:{upload_speed_mbps:.2f} Mbps")
while True:
try:
test_speed()
except Exception as e:
logger.info("发生错误正在重试"+str(e))
4.代码示例 - 指定测速服务器
我的服务器地址是从https://github.com/spiritLHLS/speedtest.net-CN-ID这里获取的。
以服务器地址"ookla-speedtest-central.hgconair.hgc.com.hk:8080"为例
因为指定服务器了,所以不需要再寻找和获取最佳服务器
import logging
import logging.config
import speedtest
from datetime import datetime
# 配置日志
logging.basicConfig(
level=logging.INFO, # 设置日志级别为 INFO
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler('./myapp.log'), # 日志文件路径
logging.StreamHandler() # 同时输出到控制台
]
)
# 创建一个日志记录器
logger = logging.getLogger(__name__)
def test_speed():
# 创建 Speedtest 对象
st = speedtest.Speedtest()
logger.info(f"{ datetime.now()}指定服务器列表,http://ookla-speedtest-central.hgconair.hgc.com.hk:8080/speedtest/upload.php")
st.get_best_server([{"url": "http://ookla-speedtest-central.hgconair.hgc.com.hk:8080/speedtest/upload.php"}]) # 指定服务器列表,服务地址为: ookla-speedtest-central.hgconair.hgc.com.hk:8080
while True:
# best = st.get_best_server()
logger.info(f"{datetime.now()}开始测试下载速度")
# 测试下载速度
download_speed = st.download()
logger.info(f"{datetime.now()}开始测试上传速度")
# 测试上传速度
upload_speed = st.upload()
# 将速度从比特转换为兆比特
download_speed_mbps = download_speed / 1024 / 1024
upload_speed_mbps = upload_speed / 1024 / 1024
# 打印结果
logger.info(f"下载速度:{download_speed_mbps:.2f} Mbps")
logger.info(f"上传速度:{upload_speed_mbps:.2f} Mbps")
while True:
try:
test_speed()
except Exception as e:
logger.info(f"{datetime.now()}出现错误,正在重试"+str(e))

浙公网安备 33010602011771号