5 releases

0.1.7 Sep 14, 2023
0.1.6 Sep 14, 2023
0.1.2 Sep 14, 2023
0.1.1 Sep 14, 2023
0.1.0 Sep 13, 2023

#821 in HTTP server

Download history 16/week @ 2024-07-20 19/week @ 2024-07-27 11/week @ 2024-08-31 11/week @ 2024-09-07 3/week @ 2024-09-14 10/week @ 2024-09-21 11/week @ 2024-09-28 3/week @ 2024-10-05 7/week @ 2024-10-12 8/week @ 2024-10-19 17/week @ 2024-10-26 30/week @ 2024-11-02

62 downloads per month

MIT license

9KB
121 lines

actix-jobs

Tests Crates.io Crates.io Docs License: MIT

A simple job scheduler for Actix.

Install

cargo add actix-jobs

Usage

Minimal example. For more information please refer to the Docs.

use actix_jobs::{Job, Scheduler, run_forever};

struct MyJob;
impl Job for MyJob {
    fn cron(&self) -> &str {
        "*/2 * * * * * *" // every two seconds
    }

    fn run(&mut self) {
        println!("Sending an email to all our clients...");
    }
}

#[actix_web::main]
async fn main() {
    let mut scheduler = Scheduler::new();
    scheduler.add(Box::new(MyJob));

    run_forever(scheduler); // This will start the scheduler in a new thread.

    // The rest of your program...
}

Information about the cron syntax.

Calling async functions inside run

This can be archieved via actix_rt::spawn as shown bellow.

use actix_jobs::{Job, Scheduler, run_forever};

struct MyJob;
impl Job for MyJob {
    fn cron(&self) -> &str {
        "*/2 * * * * * *" // every two seconds
    }

    fn run(&mut self) {
        actix_rt::spawn(async move {
            actix_rt::time::sleep(Duration::from_millis(1000)).await;

            println!("Some more async stuff...");
        }
    }
}

#[actix_web::main]
async fn main() {
    let mut scheduler = Scheduler::new();
    scheduler.add(Box::new(MyJob));

    run_forever(scheduler); // This will start the scheduler in a new thread.

    // The rest of your program...
}

Dependencies

~5–13MB
~149K SLoC