7 个版本
使用旧的 Rust 2015
0.2.5 | 2018年9月5日 |
---|---|
0.2.4 | 2018年9月5日 |
0.2.3 | 2018年6月11日 |
0.1.0 | 2018年6月9日 |
在 #throttling 中排名 #7
14KB
106 行
节流
一个简单、可配置的节流,用于减缓代码。你什么时候需要减缓代码?为了避免资源争用和下游服务的过载。
// simple throttle configured for 10 TPS
let mut throttle = Throttle::new_tps_throttle(10.0);
let iteration_start = Instant::now();
// the first one is free!
throttle.acquire(());
// the first iteration is free, subsequent iterations
// will be slowed down to a rate of 10 TPS, or one iteration
// every 100 milliseconds
for _i in 0..10 {
throttle.acquire(());
}
println!("elapsed time: {:?}", iteration_start.elapsed());
assert_eq!(iteration_start.elapsed().as_secs() == 1, true);
节流基于函数式接口,因此它可以超越恒定的 tps 速率限制,根据程序的条件实现可变速率的节流。
let mut throttle = Throttle::new_variable_throttle(
|iteration: u32, _| Duration::from_millis(arg));
let iteration_start = Instant::now();
// the first iteration is free, subsequent iterations
// will be slowed down
for i in 0..5 {
throttle.acquire(i * 100);
}
assert_eq!(iteration_start.elapsed().as_secs() == 1, true);
许可证
我希望无论你是谁,你在做什么,或者你在哪个环境中工作,你都能使用这个软件 - 希望你用它做好事而不是坏事!为此,节流在 2-clause BSD 许可证下发布,其他许可证可按请求提供。快乐的编码!