在我的一个 actix-web 处理程序中,我想调用一个在后台运行并立即向用户返回响应的函数:
async fn heavy_computation() -> {
// do some long running computation
}
async fn index(req: HttpRequest) -> impl Responder {
// start computation
heavy_computation();
// render and return template
let out context = Context::new();
context.insert("foo", "bar");
render_template("my_template.html", &context)
// computation finishes
}
#[actix_rt::main]
async fn main() -> std::io::Result<()> {
HttpServer::new(|| {
App::new()
.service(web::resource("/").route(web::get().to(index)))
})
.bind("127.0.0.1:8080")?
.run()
.await
}
如果我await
将来在计算之后才完成响应,如果我不这样做await
,则根本不会执行该函数。