11 个稳定版本
1.2.3 | 2024 年 8 月 13 日 |
---|---|
1.2.2 | 2023 年 4 月 27 日 |
1.2.1 | 2022 年 8 月 10 日 |
1.1.3 | 2022 年 6 月 19 日 |
1.0.3 | 2022 年 6 月 19 日 |
#495 在 并发
每月 135 下载
在 2 crates 中使用
12KB
120 行
rcron
一个简单的类似于 cron 的 Rust 作业调度库
使用方法
请确保将 rcron crate 添加到您的 Cargo.toml
[dependencies]
rcron = "1.2.3"
使用 cron 库中 Schedule
类型的 FromStr
实现,为作业创建一个计划。
调度格式如下
sec min hour day of month month day of week year
* * * * * * *
时间是指定 Local
您的本地时区。
如 5,8,10
这样的逗号分隔值表示多个时间值。例如,一个计划 0 2,14,26 * * * *
将在每个小时的 2 分钟、14 分钟和 26 分钟执行。
可以使用破折号指定范围。一个计划 0 0 * 5-10 * *
将每小时执行一次,但仅在月份的第 5 天到第 10 天执行。
可以指定星期的缩写或全名。一个计划 0 0 6 * * Sun,Sat
将在星期天和星期六的早上 6 点执行。
简单使用示例
use rcron::{JobScheduler, Job};
use std::time::Duration;
fn main() {
let mut sched = JobScheduler::new();
sched.add(Job::new("1/10 * * * * *".parse().unwrap(), || {
println!("exec task every 10 seconds!");
}));
sched.add(Job::new("1/5 * * * * *".parse().unwrap(), || {
println!("exec task every 5 seconds!");
}));
loop {
sched.tick();
std::thread::sleep(Duration::from_millis(500));
// Or use the following method.
// The `time_till_next_job` method returns the duration till the next job is supposed to run.
// std::thread::sleep(sched.time_till_next_job());
}
}
示例
cargo run --package rcron --example rcron_basic
Finished dev [unoptimized + debuginfo] target(s) in 0.09s
Running `target/debug/examples/rcron_basic`
exec task every 10 seconds!
exec task every 5 seconds!
exec task every 5 seconds!
exec task every 10 seconds!
exec task every 5 seconds!
exec task every 5 seconds!
exec task every 10 seconds!
exec task every 5 seconds!
exec task every 5 seconds!
类似库
- cron 我们使用的 cron 表达式解析器。
- schedule-rs 是一个类似的 Rust 库,它实现了自己的 cron 表达式解析器。
- tokio-cron-scheduler 使用 cron 类型的注解在 Tokio 上安排任务。
参考
许可证
rcron 使用以下任意一种许可证
- MIT 许可证
依赖项
~2.2–7.5MB
~52K SLoC