Scala 等待 Future.sequence 的 Await.result,哪些 future 没有按时完成?

问题描述 投票:0回答:1

我有期货清单并等待

val listWithResult = Await.result(Future.sequence(listOfFutures), 10.minutes)

失败了

java.util.concurrent.TimeoutException: Futures timed out after [10 minutes]
  • 有什么技术可以找出哪个 future 没有按时完成吗?
  • 有没有办法用额外的元数据来归因这样的未来,以给出为什么它没有按时完成的线索?

每个 future 提交任务并轮询外部服务以获取结果。我想以某种方式在堆栈跟踪中显示该任务。

scala future java.util.concurrent
1个回答
0
投票

嗯,您可以使用类似

listOfFutures.filterNot(_.isCompleted)
之类的内容轻松找出哪些内容未完成。

(另外,请记住,

Await
是代码异味,在绝大多数情况下,这实际上不是您想要做的)。

至于“为什么”,我认为这里没有任何通用的建议,除了通常的:日志记录、指标、跟踪..

© www.soinside.com 2019 - 2024. All rights reserved.