5 个版本

0.1.7 2023 年 9 月 14 日
0.1.6 2023 年 9 月 14 日
0.1.2 2023 年 9 月 14 日
0.1.1 2023 年 9 月 14 日
0.1.0 2023 年 9 月 13 日

#468 in HTTP 服务器

MIT 许可证

9KB
121

actix-jobs

Tests Crates.io Crates.io Docs License: MIT

Actix 简单作业调度器。

安装

cargo add actix-jobs

使用方法

最小示例。有关更多信息,请参阅文档

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...
}

关于 cron 语法的信息.

run 中调用异步函数

这可以通过以下方式实现:actix_rt::spawn,如下所示。

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...
}

依赖关系

~5–14MB
~154K SLoC