gpt4 book ai didi

scala - 问超时异常 : on spray-can server stop

转载 作者:行者123 更新时间:2023-12-01 23:55:04 25 4
gpt4 key购买 nike

我正在尝试使用以下代码停止 spray-can 网络服务器:

implicit val timeout = Timeout(10 seconds)
val future = ask(IO(Http)(system), Http.Unbind(10 second))
Await.result(future, Duration.Inf)

但不幸的是我收到以下异常:

[error] AskTimeoutException: : Timed out (AskSupport.scala:334) [error] akka.pattern.PromiseActorRef$$anonfun$1.apply$mcV$sp(AskSupport.scala:334) [error] akka.actor.Scheduler$$anon$11.run(Scheduler.scala:118) [error] akka.actor.LightArrayRevolverScheduler$TaskHolder.executeTask(Scheduler.scala:455) [error] akka.actor.LightArrayRevolverScheduler$$anon$12.executeBucket$1(Scheduler.scala:407) [error] akka.actor.LightArrayRevolverScheduler$$anon$12.nextTick(Scheduler.scala:411) [error] akka.actor.LightArrayRevolverScheduler$$anon$12.run(Scheduler.scala:363)

我做错了什么?

最佳答案

问题是您正在将 Http.Unbind 消息发送给错误的参与者(即 IO 扩展的管理器参与者 - 在本例中为 Http)。

您必须将 Http.Unbind 消息发送到 HttpListener(这是回复 Http.Bind 消息的 actor Http.Bound 消息)。以下示例将 Http.Bind 发送到管理器 actor 并将 Http.Unbind 发送到 HttpListener:

class TestActor extends Actor {
override def preStart = {
IO(Http) ! Http.Bind(self, interface = "localhost", port = 8080)
}
def receive = {
case Http.Bound(_) =>
println("bound")
sender ! Http.Unbind(10 seconds)
case Http.Unbound =>
println("unbound")
context.stop(self)
}
}

更多信息可以在 documentation 中找到关于启动和停止的部分。

关于scala - 问超时异常 : on spray-can server stop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24287892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com