#cron-job #cron #runner #thread #run #schedule #enough

crony

简单的 cron 运行器,它会在另一个线程中运行您的 cron 作业

6 个版本

0.3.1 2023 年 6 月 28 日
0.3.0 2022 年 2 月 28 日
0.2.2 2021 年 1 月 31 日
0.1.0 2020 年 12 月 10 日

#151并发

Download history 221/week @ 2024-03-14 167/week @ 2024-03-21 147/week @ 2024-03-28 241/week @ 2024-04-04 115/week @ 2024-04-11 162/week @ 2024-04-18 204/week @ 2024-04-25 172/week @ 2024-05-02 186/week @ 2024-05-09 174/week @ 2024-05-16 145/week @ 2024-05-23 157/week @ 2024-05-30 183/week @ 2024-06-06 233/week @ 2024-06-13 161/week @ 2024-06-20 116/week @ 2024-06-27

每月 718 次下载

MIT 许可证

19KB
292

Crates.io Docs.rs

crony

crony = "0.3.0"

Crony:一个简单的 cron 运行器

使用 Job trait 创建您的 cron 作业结构体,将其传递给 Runner  然后通过 run() 方法启动它。运行器将启动新线程,在该线程中它会循环遍历作业,并在达到预定时间后运行它们的 handle 方法。

如果您的操作系统有足够的线程可以分配,每个作业都将获得自己的线程来执行,如果没有,它将在循环所在的同一线程中执行,但将保持循环直到作业完成。

请参阅 Job trait 文档以获取更多信息。

示例

use crony::{Job, Runner, Schedule};
use std::thread;
use std::time::Duration;

struct ExampleJob;
impl Job for ExampleJob {
    fn schedule(&self) -> Schedule {
        "1/5 * * * * *".parse().unwrap()
    }
    fn handle(&self) {
        println!("Hello, I am a cron job running at: {}", self.now());
    }
}

fn run() {
    let mut runner = Runner::new();

    println!("Adding ExampleJob to the Runner");
    runner = runner.add(Box::new(ExampleJob));

    println!("Starting the Runner for 20 seconds");
    runner = runner.run();
    thread::sleep(Duration::from_millis(20 * 1000));

    println!("Stopping the Runner");
    runner.stop();
}

fn main() {
    run();
}

输出

Adding ExampleJob to the Runner
Starting the Runner for 20 seconds
Hello, I am a cron job running at: 2021-01-31 03:06:25.908475 UTC
Hello, I am a cron job running at: 2021-01-31 03:06:30.912637 UTC
Hello, I am a cron job running at: 2021-01-31 03:06:35.926938 UTC
Hello, I am a cron job running at: 2021-01-31 03:06:40.962138 UTC
Stopping the Runner

许可证

根据以下许可证之一授权

任选其一。

贡献

除非您明确声明,否则任何有意提交给作品包含在内的贡献,根据 Apache-2.0 许可证定义,将如上所述双重许可,无需任何额外条款或条件。

依赖关系

~2–8MB
~50K SLoC