#job-scheduling #cron #cron-job #job #scheduler

job_scheduler

A simple cron-like job scheduling library for Rust

10 stable releases

Uses old Rust 2015

1.2.1 Apr 1, 2020
1.1.0 Oct 26, 2019
1.0.6 Nov 7, 2018
1.0.5 Aug 24, 2018
1.0.2 Mar 4, 2017

#259 in Date and time

Download history 406/week @ 2023-12-14 433/week @ 2023-12-21 268/week @ 2023-12-28 407/week @ 2024-01-04 380/week @ 2024-01-11 535/week @ 2024-01-18 376/week @ 2024-01-25 363/week @ 2024-02-01 173/week @ 2024-02-08 284/week @ 2024-02-15 246/week @ 2024-02-22 272/week @ 2024-02-29 228/week @ 2024-03-07 201/week @ 2024-03-14 226/week @ 2024-03-21 286/week @ 2024-03-28

963 downloads per month
Used in 5 crates

MIT/Apache

12KB
109 lines

JobScheduler

A simple cron-like job scheduling library for Rust.

Usage

Please see the Documentation for more details.

Be sure to add the job_scheduler crate to your Cargo.toml:

[dependencies]
job_scheduler = "*"

Creating a schedule for a job is done using the FromStr impl for the Schedule type of the cron library.

The scheduling format is as follows:

sec   min   hour   day of month   month   day of week   year
*     *     *      *              *       *             *

Time is specified for UTC and not your local timezone. Note that the year may be omitted.

Comma separated values such as 5,8,10 represent more than one time value. So for example, a schedule of 0 2,14,26 * * * * would execute on the 2nd, 14th, and 26th minute of every hour.

Ranges can be specified with a dash. A schedule of 0 0 * 5-10 * * would execute once per hour but only on day 5 through 10 of the month.

Day of the week can be specified as an abbreviation or the full name. A schedule of 0 0 6 * * Sun,Sat would execute at 6am on Sunday and Saturday.

A simple usage example:

extern crate job_scheduler;
use job_scheduler::{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));
    }
}

Similar Libraries

  • cron the cron expression parser we use.
  • schedule-rs is a similar rust library that implements it's own cron expression parser.

License

JobScheduler is licensed under either of

Contributing

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Please see the CONTRIBUTING file for more information.

Dependencies

~4.5–6MB
~109K SLoC