#watchdog #tokio #actor #signal #duration #expiration #bulletproof

simple-tokio-watchdog

非常简单但经得起考验的看门狗actor

2个不稳定版本

0.2.0 2023年8月24日
0.1.0 2023年8月2日

#1119 in 异步

每月23次下载

Apache-2.0

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