나는 플레이! http 요청을 보내서 다른 서버와 통신하는 스칼라 응용 프로그램입니다. 이 시스템에는 한계가 있습니다. 단 하나의 토큰에 대해 5 개의 HTTP 요청 만 수행 할 수 있습니다.스칼라, 선물, WS 라이브러리, Api
이 나는이 방법을 서면으로 작성했습니다 :
import scala.concurrent.ExecutionContext.Implicits.global
private def sendApiRequest(method: String, params: Option[JsValue] = None)(implicit token: String): Future[JsObject] = {
if (concurrentRequests.get(token).isEmpty) {
concurrentRequests += token -> 1
} else {
concurrentRequests += token -> (concurrentRequests.get(token).get + 1)
}
println(s"$token: ${concurrentRequests.get(token).get}")
val request = WS.url(API_URL)
.withMethod("POST")
.withBody(Json.obj(
"application_id" -> clientId,
"method" -> method,
"token" -> token,
"param" -> params
))
request.execute().map(response => {
val result = response.json.as[JsObject]
if (!result.keys.contains("data")) {
throw new Exception(result.toString())
} else {
result
}
})
}
을 그리고이 방법을 사용 배우가있다 그리고 난 몇 초 후에 그 예외를 얻을.
제 질문은 : 'RUNNING MODE'에서 기능 수를 어떻게 제어 할 수 있습니까? 기본 실행 문 대신 다른 실행 문맥을 사용해야합니까? 제발 설명하거나 실행 컨텍스트, 스레드에 대한 좋은 소개를주는 등
내가 한당신을 감사로하지를 전송하여 가능한 한 빨리 원격 서비스에서 정보를 얻으려면
!
당신은 HTTP를 처리하는 코드를 표시해야합니다 의뢰. – Salem