2个不稳定版本
0.2.0 | 2023年8月24日 |
---|---|
0.1.0 | 2023年8月2日 |
#1119 in 异步
每月23次下载
8KB
100 代码行
看门狗
非常简单但经得起考验的看门狗actor。
以足够快的速度在mpsc发送者上发送重置信号,否则一次性超时通道将触发。
use tokio::select;
use simple_tokio_watchdog::{Signal, Watchdog};
use std::time::Duration;
#[tokio::main]
async fn main() {
let watchdog = Watchdog::with_timeout(Duration::from_millis(100));
let (reset_tx, mut expired_rx) = watchdog.run();
let mut duration = Duration::from_millis(4);
loop {
let sleep = tokio::time::sleep(duration);
tokio::pin!(sleep);
tokio::select! {
_ = &mut expired_rx => {
break;
}
() = sleep.as_mut() => {
reset_tx.send(Signal::Reset).await.unwrap();
duration *= 2;
continue;
}
}
}
println!("{duration:?}");
}
依赖项
~2.3–4MB
~68K SLoC