Crate cron_tab

source ·
Expand description

CronTab

A cron job library for Rust.

Usage

Add cron_tab crate to your Cargo.toml:

[dependencies]
cron_tab = {version = "0.2", features = ["sync", "async"]}

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
*     *     *      *              *       *             *

A simple example:

use chrono::{FixedOffset, Local, TimeZone};
use cron_tab;

fn main() {
    let local_tz = Local::from_offset(&FixedOffset::east(7));
    let mut cron = cron_tab::Cron::new(local_tz);

    let first_job_id = cron.add_fn("* * * * * * *", print_now).unwrap();

    // start cron in background
    cron.start();

    cron.add_fn("* * * * * *", move || {
        println!("add_fn {}", Local::now().to_string());
    })
    .unwrap();

    // remove job_test
    cron.remove(first_job_id);

    std::thread::sleep(std::time::Duration::from_secs(10));

    // stop cron
    cron.stop();
}

fn print_now() {
    println!("now: {}", Local::now().to_string());
}

Async example:

use std::sync::Arc;

use chrono::{FixedOffset, Local, TimeZone};
use cron_tab::AsyncCron;
use tokio::sync::Mutex;

#[tokio::main]
async fn main() {
    let local_tz = Local::from_offset(&FixedOffset::east(7));
    let mut cron = AsyncCron::new(local_tz);

    let first_job_id = cron.add_fn("* * * * * *", print_now).await;

    cron.start().await;

    let counter = Arc::new(Mutex::new(1));
    cron.add_fn("* * * * * *", move || {
        let counter = counter.clone();
        async move {
            let mut counter = counter.lock().await;
            *counter += 1;
            let now = Local::now().to_string();
            println!("{} counter value: {}", now, counter);
        }
    })
    .await;

    std::thread::sleep(std::time::Duration::from_secs(10));

    // stop cron
    cron.stop();
}

async fn print_now() {
    println!("now: {}", Local::now().to_string());
}

Structs

Enums

Type Definitions