6 个版本 (破坏性)
新 0.5.0 | 2024 年 8 月 10 日 |
---|---|
0.4.1 | 2023 年 12 月 1 日 |
0.4.0 | 2023 年 11 月 16 日 |
0.3.0 | 2023 年 9 月 15 日 |
0.1.0 | 2023 年 9 月 4 日 |
#233 in HTTP 服务器
每月 155 次下载
用于 2 crates
23KB
447 行
localhost 太快了吗?试试 yocalhost。
yocalhost 是一个模拟延迟和带宽限制的 HTTP 开发服务器。
它支持范围请求,并将带宽限制应用于所有并发连接。
动机
与延迟和带宽不切实际的快速的本机 localhost 服务器相比,评估几乎无法告诉你你的网络访问在现实世界中的表现。
将网络客户端与远程主机进行比较受整个互联网的任意性影响。特别是如果你的客户端涉及许多请求,可能难以获得一致的测量结果。
使用 yocalhost,你可以运行本地的 http 服务器,但指定人工带宽和延迟限制。这允许你以可重复的方式测量延迟和带宽对你代码的实时影响。
安装 yocalhost 开发服务器 CLI
假设你已经安装了 rust 和 cargo,你可以使用以下命令安装 yocalhost:
cargo安装 yocalhost
然后开始使用
cd your_web_root
yocalhost
# Start on port 8888, simulating a 100 megabit connection with 50ms latency
yocalhost -p 8888 -b "100Mbit" -l 50
# See other options
yocalhost --help
在您的自动化 Rust 基准测试中使用 yocalhost 的 ThrottledServer
// e.g. in a criterion benchmark
use yocalhost::ThrottledServer;
let port = 8888;
let latency_ms = 50;
let bytes_per_second = 100_000_000 / 8;
let web_root = "../../test/data";
let server = ThrottledServer::new(port, latency_ms, bytes_per_second, web_root);
let runtime = tokio::runtime::Runtime::new().unwrap(); : Runtime
runtime.spawn(async move {
server.serve().await;
});
c.bench_function("my network test", |b| {
b.to_async(runtime).iter(|| {
do_some_work(format!("https://127.0.0.1:{port}")
})
})
依赖项
~8–16MB
~215K SLoC