scala – 把dispatch放到哪里.Http.shutdown()
发布时间:2020-12-16 18:35:51 所属栏目:安全 来源:网络整理
导读:如果有n个独立的Http调用,请调用dispatch.Http.shutdown()的位置,例如: import com.typesafe.scalalogging.slf4j.Loggingimport org.json4s._import org.json4s.native.JsonMethods._import scala.util.{ Failure,Success }object Main extends App with Lo
如果有n个独立的Http调用,请调用dispatch.Http.shutdown()的位置,例如:
import com.typesafe.scalalogging.slf4j.Logging import org.json4s._ import org.json4s.native.JsonMethods._ import scala.util.{ Failure,Success } object Main extends App with Logging { logger.debug("github.cli") // GET /users/defunkt: `curl https://api.github.com/users/defunkt` val host: dispatch.Req = dispatch.host("api.github.com").secure val request: dispatch.Req = host / "users" / "defunkt" logger.debug(s"Request URL: ${request.url}") import dispatch.Defaults.executor dispatch.Http(request > dispatch.as.Response(_.getHeaders())) onComplete { case Success(h) => logger.debug(h.toString()) case Failure(e) => logger.debug(s"Error: $e") } dispatch.Http(request OK dispatch.as.json4s.Json) onComplete { case Success(j) => logger.debug(j.toString()) case Failure(e) => logger.debug(s"Error: $e") } //dispatch.Http.shutdown() // <<<<< ????? } 谢谢,/ nm 编辑:这可能是一个选择,比方说,这是一种“正确”的方式吗? val headers = dispatch.Http(request > dispatch.as.Response(_.getHeaders())) val user = dispatch.Http(request OK dispatch.as.json4s.Json) val all = dispatch.Future.sequence(headers :: user :: Nil) headers onComplete { case Success(h) => logger.debug(s"Header: ${h.toString()}") case Failure(e) => logger.debug(s"Error: $e") } user onComplete { case Success(j) => logger.debug(s"User: ${j.toString()}") case Failure(e) => logger.debug(s"Error: $e") } all onComplete { case _ => dispatch.Http.shutdown() } 解决方法
AFAIK你只能在应用程序结束时(或严格来说,当你完成一个特定的线程)时,因为一旦完成,所有现有的连接都消失了,你不能创建任何新的连接.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |