Как увеличить время ожидания запроса для http4s

У меня есть запрос, который разговаривает с БД, который требует времени для ответа. И http4s выбрасывает тайм-аут запроса. Я хотел знать, есть ли свойство для увеличения времени ожидания запроса?

Спасибо Саад.

1 ответ

Тайм-ауты сервера

BlazeBuilder может быть легко отрегулирован. Реализация по умолчанию

import org.http4s._
import scala.concurrent.duration._

BlazeBuilder(
  socketAddress = InetSocketAddress.createUnresolved(LoopbackAddress, 8080),
  serviceExecutor = DefaultPool, // @org.http4s.util.threads - ExecutorService

  idleTimeout = 30.seconds
  isNio2 = false,

  connectorPoolSize = math.max(4, Runtime.getRuntime.availableProcessors() + 1),
  bufferSize = 64*1024,
  enableWebSockets = true,

  sslBits = None,
  isHttp2Enabled = false,

  maxRequestLineLen = 4*1024,
  maxHeadersLen = 40*1024,

  serviceMounts = Vector.empty
)

Мы можем использовать значение по умолчанию и изменить его, так как в классе реализован метод копирования.

import org.http4s._
import scala.concurrent.duration._

BlazeBuilder.copy(idleTimeout = 5.minutes)

Затем вы можете продолжить работу с вашим сервером, добавив свои услуги и затем обслуживая их.

Время ожидания клиента

BlazeClient принимает класс конфигурации с именем BlazeClientConfig

По умолчанию

import org.http4s._
import org.http4s.client._

BlazeClientConfig(
  idleTimeout = 60.seconds,
  requestTimeout = Duration.Inf,
  userAgent = Some(
    `User-Agent`(AgentProduct("http4s-blaze", Some(BuildInfo.version)))
  ),

  sslContext = None,
  checkEndpointIdentification = true,

  maxResponseLineSize = 4*1024,
  maxHeaderLength = 40*1024,
  maxChunkSize = Integer.MAX_VALUE,
  lenientParser = false,

  bufferSize = 8*1024,
  customeExecutor = None,
  group = None
)

Тем не менее, у нас есть конфигурация по умолчанию, и, поскольку она существует в качестве класса case, вам, вероятно, лучше изменить значение по умолчанию. Используйте PooledHttp1Client в большинстве случаев.

import scala.concurrent.duration._
import org.http4s.client._

val longTimeoutConfig =
  BlazeClientConfig
    .defaultConfig
    .copy(idleTimeout = 5.minutes)

val client = PooledHttp1Client(
  maxTotalConnections = 10,
  config = longTimeoutConfig
)
Другие вопросы по тегам