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}