#调度器 #tokio #工作调度器

tokio-simple-scheduler

为 Tokio 提供的一个非常简单的调度器

3 个版本

0.1.2 2022 年 11 月 19 日
0.1.1 2022 年 8 月 26 日
0.1.0 2022 年 8 月 26 日

34#工作调度器

MIT 许可协议

7KB
93

Tokio Simple Scheduler

我需要一个没有任何功能的非常基本的调度器,所以就有了这个。

use std::time::Duration;

use chrono::Utc;
use tokio_simple_scheduler::{Job, Scheduler};

#[tokio::main]
async fn main() {
    let mut scheduler = Scheduler::default();
    scheduler.add(
        Job::new("every 2", "*/2 * * * * *", || {
            Box::pin(async {
                println!("{:?} - Every 2 seconds", Utc::now());
            })
        })
        .unwrap(),
    );
    scheduler.add(
        Job::new("every 4", "*/4 * * * * *", || {
            Box::pin(async {
                println!("{:?} - Every 4 seconds", Utc::now());
            })
        })
        .unwrap(),
    );
    scheduler.add(
        Job::new("every 5", "*/5 * * * * *", || {
            Box::pin(async {
                println!("{:?} - Every 5 seconds", Utc::now());
            })
        })
        .unwrap(),
    );
    scheduler.add(
        Job::new("every 10", "*/10 * * * * *", || {
            Box::pin(async {
                println!("{:?} - Every 10 seconds", Utc::now());
            })
        })
        .unwrap(),
    );
    scheduler.add(
        Job::new("every 30", "*/30 * * * * *", || {
            Box::pin(async {
                println!("this job");
                tokio::time::sleep(Duration::from_secs(3)).await;
                println!("takes a few");
                tokio::time::sleep(Duration::from_secs(3)).await;
                println!("seconds to run");
            })
        })
        .unwrap(),
    );
    scheduler.start().await;
}

它不做其他任何事情。

依赖关系

~4–11MB
~110K SLoC