cli_batteries/
heartbeat.rs1use crate::shutdown::await_shutdown;
2use std::time::{Duration, Instant};
3use tokio::time::{interval, MissedTickBehavior};
4use tracing::info;
5
6pub async fn heartbeat() {
7 let start = Instant::now();
8
9 let mut interval = interval(Duration::from_secs(5 * 60));
10 interval.set_missed_tick_behavior(MissedTickBehavior::Delay);
11 interval.reset(); loop {
14 tokio::select! {
15 _ = await_shutdown() => break,
16 _ = interval.tick() => {},
17 };
18
19 let uptime = start.elapsed();
21
22 info!(?uptime, "Heartbeat");
23
24 }
26}