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 在 并发
每月 718 次下载
19KB
292 行
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 版,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 https://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则任何有意提交给作品包含在内的贡献,根据 Apache-2.0 许可证定义,将如上所述双重许可,无需任何额外条款或条件。
依赖关系
~2–8MB
~50K SLoC