11 个版本
0.1.4 | 2023 年 8 月 22 日 |
---|---|
0.1.3 | 2022 年 5 月 30 日 |
0.1.2 | 2021 年 9 月 12 日 |
0.0.6 | 2021 年 9 月 7 日 |
0.0.2 | 2021 年 8 月 31 日 |
#71 在 日期和时间
82KB
2K SLoC
skedge
Rust 单进程调度库。从 Python 的 schedule
转移而来,受 clockwork
(Ruby) 和 "Rethinking Cron" by Adam Wiggins 的启发。
用法
文档可以在 docs.rs 上找到。
此库使用 Builder 模式定义作业。创建一个新的 Scheduler
实例,然后使用 every()
和 every_single()
函数开始定义作业。通过调用 Job::run()
将新作业添加到调度器来完成配置。使用 Scheduler::run_pending()
方法触发任何达到下一次预定运行时间的作业。目前,精度只能指定到秒,更小的时间单位不可指定。
use chrono::Local;
use skedge::{every, Scheduler};
use std::thread::sleep;
use std::time::Duration;
fn greet(name: &str) {
let now = Local::now().to_rfc2822();
println!("Hello {name}, it's {now}!");
}
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut schedule = Scheduler::new();
every(2)
.to(8)?
.seconds()?
.until(Local::now() + chrono::Duration::seconds(30))?
.run_one_arg(&mut schedule, greet, "Good-Looking")?;
let now = Local::now();
println!("Starting at {now}");
loop {
if let Err(e) = schedule.run_pending() {
eprintln!("Error: {e}");
}
sleep(Duration::from_secs(1));
}
}
查看 示例脚本 以查看更多配置选项。尝试 cargo run --example readme
或 cargo run --example basic
来查看其实际效果。
CFFI
存在一个实验性的C语言外部函数接口,该功能受限于功能门,默认情况下不包含。要使用此功能构建库,请使用以下命令:cargo build --features ffi
。有关从C语言使用此库的详细信息,请参阅Makefile和examples/ffi/c目录。执行make run
以构建和执行包含的示例C程序。目前,它仅支持不接受参数的工作函数。
开发
克隆此仓库。有关贡献指南,请参阅CONTRIBUTING.md
。
依赖项
- 稳定的Rust:默认稳定工具链即可。可以通过此链接中的说明使用
rustup
获取。
Crates
- chrono - 日期和时间处理
- log - 记录
- pretty_env_logger - 美观的记录
- lazy_static - 懒加载的静态变量
- rand - 随机数生成
- regex - 正则表达式
- thiserror - 错误派生宏
仅开发
- pretty_assertions - 彩色的断言输出
依赖项
~4.5–7MB
~117K SLoC