periodic/
periodic.rs

1use std::{sync::Arc, time::Duration};
2
3use persistent_scheduler::core::periodic::PeriodicTask;
4
5#[tokio::main]
6async fn main() {
7    tracing_subscriber::fmt()
8        .with_max_level(tracing::Level::INFO)
9        .init();
10
11    #[derive(Debug)]
12    struct Test {
13        pub name: String,
14        pub age: u32,
15    }
16
17    let param = Arc::new(Test {
18        name: "this is a test name".to_string(),
19        age: 34,
20    });
21    let task = Arc::new(move |param: Option<Arc<Test>>| {
22        Box::pin(async move {
23            println!("this is periodic task. param={:#?}", param.unwrap());
24            Ok(())
25        })
26    });
27    let periodic_task = Arc::new(PeriodicTask::new("periodic example"));
28    periodic_task.start_with_signal(task, Some(param), Duration::from_secs(2));
29    tokio::time::sleep(Duration::from_secs(10 * 60)).await;
30}