7个版本
使用旧Rust 2015
0.1.6 | 2017年9月13日 |
---|---|
0.1.5 | 2017年9月12日 |
0.1.2 | 2017年3月7日 |
#1991 在 解析器实现
每月30次下载
22KB
495 行
cron_rs
用Rust编写的Cron解析器和周期性作业调度器。
用法
Cron时间格式
MINUTE HOUR DAY MONTH WEEKDAY
- MINUTE(必需):分钟,0-59。
- HOUR(必需):小时,0-23。
- DAY(必需):月份中的天数,1-31。
- MONTH(必需):年份中的月份,1-12。
- WEEKDAY(必需):星期中的天数,0-6。
安装
在Cargo.toml中
[dependencies]
cron_rs = "*"
好例子:Cron时间格式(间隔)
*/2 1-8,11 * * *
完整示例
调度器是一个cron时间调度器。
以下示例将向您展示
- 解析CronEntry。
- 创建一个输出保持器来捕获cron输出。
- 创建一个调度器。
- 创建一个任务,然后启动它,它将周期性地启动和执行新的作业。
extern crate time;
extern crate cron_rs;
use std::thread;
use std::time as stdtime;
use std::process::Command;
use cron_rs::Scheduler;
use cron_rs::Job;
use cron_rs::Server;
use cron_rs::OutputKeeper;
use cron_rs::CronEntry;
use cron_rs::Task;
fn main() {
// Make a time scheduler
let tm = time::now();
let sch = Scheduler::new("*/2 1-4,16,11,17 * * *").unwrap();
println!("{:?}", sch);
println!("{:?} {}", &tm, sch.isTimeUp(&tm));
// Parse cron string to CronEntry
let cronEntry = r#"{"intervals":"* * * * *","command":"date +%F_%T","description":"print time every minute","daemon":false,"testRun":true,"timeoutSeconds":5,"autokill":true,"alarmEmail":false,"alarmSms":true,"alarmUsers":"gaobushuang","id":1,"cronId":1,"treeId":261,"treePath":"b2c.b2cop.build-ci.build-ci.cn-test","active":false,"updateTime":"2017-02-07T13:22:52+08:00","lastCode":0,"lastJob":0,"watch":true,"host":""}"#
.parse::<CronEntry>().unwrap();
// Make time scheduler
let intervals = &*cronEntry.intervals.to_owned();
let sch = Scheduler::new(intervals).unwrap();
// Make a new server and a output keeper,
// then waiting for incoming message.
let srv = Server {
output_keeper: "foo".to_string(),
};
let mut keeper = OutputKeeper::new(&srv);
// Make a new task
let mut mytask = Task::new(sch, cronEntry, &keeper);
// mytask spawn a new job and execute it every minute.
mytask.start();
}
依赖关系
- time
- regex
常见问题解答
依赖关系
~11MB
~263K SLoC