https://github.com/lholden/job_scheduler
A simple cron-like job scheduling library for Rust.
https://github.com/lholden/job_scheduler
cron cronjob crontab rust rustlang
Last synced: 8 months ago
JSON representation
A simple cron-like job scheduling library for Rust.
- Host: GitHub
- URL: https://github.com/lholden/job_scheduler
- Owner: lholden
- License: apache-2.0
- Created: 2017-03-04T07:27:05.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2022-11-28T19:12:32.000Z (over 3 years ago)
- Last Synced: 2024-10-30T05:56:55.154Z (over 1 year ago)
- Topics: cron, cronjob, crontab, rust, rustlang
- Language: Rust
- Size: 30.3 KB
- Stars: 198
- Watchers: 6
- Forks: 34
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
**NO LONGER MAINTAINED**
The project I created this crate for is no longer in use, so I haven't really had the time to keep on top of keeping things up to date. I recommend looking at other options if you need the functionality this project provides.
[If someone would like to take over the project, please let me know.](https://github.com/lholden/job_scheduler/discussions/30)
# JobScheduler
[](https://docs.rs/job_scheduler) [](https://crates.io/crates/job_scheduler) [](https://travis-ci.org/lholden/job_scheduler)
A simple cron-like job scheduling library for Rust.
## Usage
Please see the [Documentation](https://docs.rs/job_scheduler/) for more details.
Be sure to add the job_scheduler crate to your `Cargo.toml`:
```toml
[dependencies]
job_scheduler = "*"
```
Creating a schedule for a job is done using the `FromStr` impl for the
`Schedule` type of the [cron](https://github.com/zslayton/cron) library.
The scheduling format is as follows:
```text
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:
```rust
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](https://github.com/zslayton/cron) the cron expression parser we use.
* [schedule-rs](https://github.com/mehcode/schedule-rs) is a similar rust library that implements it's own cron expression parser.
## License
JobScheduler is licensed under either of
* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or
http://www.apache.org/licenses/LICENSE-2.0)
* MIT license ([LICENSE-MIT](LICENSE-MIT) or
http://opensource.org/licenses/MIT)
## 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](CONTRIBUTING.md) file for more information.