我正在使用运行http服务器
actix_web
它有一个接收一些文件的端点,我需要处理这些文件。对于异步运行时,我使用
tokio
。问题是,我想同时处理这些文件,但存在一些问题。
第一个问题是
body
活得不够长,因为它不是
' static
键入。
第二个问题是,我需要将一些变量传递给实际处理文件的函数,但我得到了
use of moved value
错误
这是代码:
#[post("/images")]
async fn process_images(
body: Json<ProcessFilesBody>,
aws: Data<AWSService>,
) -> Result<impl Responder, Error> {
println!("PROCESSING {:?} FILES", body.0.files.len());
let mut futures = Vec::new();
for file in &body.0.files {
let handle = spawn(async move {
process_file(aws.clone(), &file).await;
});
futures.push(handle);
}
for handle in futures {
handle.await.unwrap();
}
Ok(HttpResponse::Ok())
}
我试过包装
aws
中的变量
Arc
但没有起作用,我不知道如何修复文件的生存期