即使 Future 已完成,Scala App 也不会退出

Scala App doesn't exit even though Future is completed

我等待 Future 完成并在控制台上打印内容。即使一切都完成了,主应用程序也不会退出,我必须手动将其杀死。

def main(args: Array[String]): Unit {
    val req = HttpRequest(GET, myURL)
    val res = Http().singleRequest(req)
    val resultsFutures = Future {
        val resultString = Await.result(HttpRequests.unpackResponse(res), Duration.Inf)
        JsonMethods.parse(resultString).extract[List[Results]]
    }
    val results = Await.result(resultsFutures, Duration.Inf)
    println(results)
}

因此 results 以预期的方式打印在控制台上,但应用程序仍未结束。 我可以做些什么来退出应用程序吗? 运行 主还在等什么吗?

我正在使用:

当您使用 Akka 时,您可能有一个 ActorSystem 以某种方式在引擎盖下实例化,它将保持进程 运行.

您可以亲自动手调用它的 actorSystem.terminate() 方法,或者您也可以在 main 方法的末尾使用显式 sys.exit(0) (0是你想要的退出代码)。

编辑:您还应该将 Await 包装在 Try 中,并确保在出现故障时也调用 sys.exit