3 个版本
0.0.12 | 2023 年 12 月 21 日 |
---|---|
0.0.11 | 2023 年 12 月 9 日 |
0.0.10 | 2023 年 12 月 5 日 |
#247 在 日期和时间
每月 22 次下载
14KB
260 代码行
Croner Scheduler
Croner Scheduler 是一个专注于基于 cron 模式调度任务的独立 Rust 库。该库是 Croner 项目的独立部分,旨在为希望使用熟悉的 cron 语法进行轻量级高效线程化任务调度的开发者提供工具。
有关 cron 模式解析和评估的更多信息,请参阅 Croner crate。
功能
- 根据 cron 模式在单独的线程中调度任务,实现并发任务执行。
- 强大的错误处理。
- 具有暂停、恢复或停止已计划任务的能力来控制执行流程。
- 内存中操作,无需持久存储或配置文件。
- 高度优化的查找未来/过去匹配的方法。
- 除了
croner
之外没有依赖项。
入门指南
先决条件
确保您已在计算机上安装 Rust。如果没有,您可以从 官方 Rust 网站 获取。
安装
将 croner-scheduler
、croner
和 chrono
添加到您的 Cargo.toml
依赖项中
[dependencies]
croner-scheduler = "0.0.12"
croner = "2.0.3"
chrono = "0.4.31"
用法
以下是一个快速示例,用于开始调度任务
use chrono::Local;
use croner_scheduler::{CronScheduler, SchedulerResult};
use croner::Cron;
use std::thread;
fn main() {
// Schedule a task at even seconds
let cron: Cron = "0/2 * * * * *".parse().expect("Invalid cron expression");
let mut scheduler = CronScheduler::new(cron);
// The trigger closure must be set up to accept an optional context
scheduler.start(|_: Option<&()>| {
println!("Task 1 triggered at {:?}", Local::now());
});
// The tasks can be paused, resumed, or stopped as needed
// scheduler.pause();
// scheduler.resume();
// scheduler.stop();
// Loop to keep the main process alive
// - You need to supply a time-zoned "now" to tick, so that
// croner knows which timezone to match the pattern against.
// Using Local in this example.
while scheduler.tick(Local::now()) != SchedulerResult::Dead {
// Sleep for a short duration to prevent busy waiting
thread::sleep(std::time::Duration::from_millis(300));
}
}
有关详细文档和示例,请访问 Croner Scheduler on docs.rs。
贡献
我们欢迎贡献!请随时提交拉取请求或打开一个问题。
许可证
本项目采用 MIT 许可证 - 有关详细信息,请参阅 LICENSE.md 文件。
免责声明
请注意,Croner Scheduler 目前处于早期开发阶段。因此,API 可能会在未来的版本中更改,遵循语义版本控制原则。我们建议在将 Croner Scheduler 集成到您的项目中时考虑到这一点。
联系方式
如果您有任何问题或反馈,请在存储库中打开一个问题,我们将尽快回复您。
依赖项
~1.5MB
~20K SLoC