6 个稳定版本
2.0.5 | 2024 年 4 月 24 日 |
---|---|
2.0.4 | 2023 年 2 月 1 日 |
2.0.3 | 2022 年 12 月 10 日 |
2.0.2 | 2022 年 10 月 9 日 |
2.0.0 | 2022 年 5 月 20 日 |
#37 在 日期和时间
3,903 每月下载量
用于 9 个 Crates(直接使用 3 个)
15KB
152 行
JobScheduler
为 Rust 提供一个类似 cron 的简单作业调度库。
从 https://github.com/lholden/job_scheduler 分支,感谢 @lholden!这是一个尝试维护并可能改进的分支。
更新
2024-04-24 (v2.0.5)
- 将 MSRV 设置为 v1.61.0 以匹配 chrono 的 v0.4.34 MSRV
- 更新 tokio 的开发依赖到 v1.37.0 或更高版本
- 添加了几个 clippy 检查
- 修复了所有 clippy 报告的项目
- 将 JobScheduler::new() 设置为
const fn
- 更新示例以使用
log
函数并始终打印当前线程 ID - 添加一个非常简单的哈希以更好地区分 tokio 5 秒示例
2023-02-01 (v2.0.4)
- 验证 uuid v1.3.0 的工作
- 使用 miri 检查示例,并添加了
std::process::exit(0);
以生成干净的退出。 - 将 MSRV 设置为 v1.56.1
- 更新 tokio 的开发依赖到 v1.25.0 或更高版本
2022-12-10 (v2.0.3)
- 作业函数不需要 Sync 特性(PR #1 - 感谢 @mikel1703)
- 添加了两个其他示例。一个是使用线程的示例,另一个也使用了 MPSC。
- 添加了一些 clippy 检查
- 修复了一些拼写错误
2022-10-09 (v2.0.2)
- 更新 cron 到 v0.12.0
- 将 chrono v0.4.20 设置为最低版本以减轻已知 CVE。
用法
有关详细信息,请参阅文档。
请确保将 job_scheduler_ng crate 添加到您的 Cargo.toml
[dependencies]
job_scheduler_ng = "*"
使用 FromStr
实现为 Schedule
类型创建工作计划,该类型来自 cron 库。
调度格式如下
sec min hour day of month month day of week year
* * * * * * *
时间指定为 UTC
而不是您的本地时区。请注意,年份可能省略。
如 5,8,10
这样的逗号分隔值代表多个时间值。例如,一个调度计划为 0 2,14,26 * * * *
将在每个小时的第2分钟、第14分钟和第26分钟执行。
可以使用破折号指定范围。一个调度计划为 0 0 * 5-10 * *
将每小时执行一次,但只在第5天到第10天执行。
可以指定星期的缩写或全称。一个调度计划为 0 0 6 * * Sun,Sat
将在星期日和星期六的早上6点执行。
简单使用示例
extern crate job_scheduler_ng;
use job_scheduler_ng::{JobScheduler, Job};
use std::time::Duration;
fn main() {
let mut sched = JobScheduler::new();
sched.add(Job::new("1/10 * * * * *".parse().unwrap(), || {
println!("I get executed every 10 seconds!");
}));
loop {
sched.tick();
std::thread::sleep(Duration::from_millis(500));
}
}
类似库
- cron 我们使用的cron表达式解析器。
- schedule-rs 是一个类似的rust库,实现了自己的cron表达式解析器。
许可协议
JobScheduler 根据以下协议之一许可
- Apache License, Version 2.0, (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
贡献
除非您明确说明,否则根据Apache-2.0许可协议定义,您提交的任何有意提交的、旨在包含在作品中的贡献,将根据上述协议双许可,不附加任何额外条款或条件。
有关更多信息,请参阅CONTRIBUTING 文件。
依赖项
~2.2–8MB
~51K SLoC