我正在学习http4s并尝试文档中的基本示例,我注意到了一些奇怪的东西。简单地启动和停止服务器可以正常工作,但是如果发送了任何请求,那么优雅的关机大约需要30秒(在此期间,新传入的请求仍将被处理和响应)。
这是代码:
object Main extends IOApp.Simple {
val helloWorldService = HttpRoutes.of[IO] {
case GET -> Root / "hello" / name =>
Ok(s"Hello, $name.")
}.orNotFound
def server[F[_] : Async : Network]: EmberServerBuilder[F] = {
EmberServerBuilder
.default[F]
.withHost(ipv4"0.0.0.0")
.withPort(port"8000")
}
def run: IO[Unit] = {
server[IO]
.withHttpApp(helloWorldService)
.build
.use(_ => IO.never)
}
}这既发生在稳定版本(0.23.16)和dev (1.0.0-M37)版本上。
发布于 2022-12-01 16:23:32
究其原因,是浏览器/邮递员使连接保持活动状态。只需关闭邮递员后,请求关闭连接和关闭是立即的。
EmberServerBuilder有.withShutdownTimeout设置来控制关闭连接等待关闭的时间。
https://stackoverflow.com/questions/74642041
复制相似问题