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 服务器
9KB
121 行
actix-jobs
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...
}
在 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