【发布时间】:2021-03-27 15:02:10
【问题描述】:
我正在尝试并行执行由迭代器给出的几个 sqlx 查询。 这可能是我目前为止最接近的。
let mut futures = HahshMap::new() // placeholder, filled HashMap in reality
.iter()
.map(async move |(_, item)| -> Result<(), sqlx::Error> {
let result = sqlx::query_file_as!(
// omitted
)
.fetch_one(&pool)
.await?;
channel.send(Enum::Event(result)).ignore();
Ok(())
})
.clollect();
futures::future::join_all(futures);
所有查询和发送都是相互独立的,因此如果其中一个失败,其他的仍应得到处理。 此外,当前的异步关闭是不可能的。
【问题讨论】:
-
join_all()有什么问题如果您想在任何完成后做某事,请使用select_all()。 -
@HHK 地图不能这样工作。此外,我希望所有未来都能解决。
标签: asynchronous rust parallel-processing