Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 추상 팩토리
- Design Pattern
- 코틀린
- 디자인패턴 #
- F
- Abstract Factory
- 옵저버 패턴
- Functional Programming
- Observer Pattern
- 싱글톤
- ㅋㅁ
- builderPattern
- designPattern
- PrototypePattern
- ㅓ
- a
- Kotlin
- Singleton
- 빌터패턴
- El
- 디자인패턴
- 추상팩토리패턴
- factory method
- 함수형프로그래밍
- 프로토타입 패턴
- 팩토리 메소드
- r
Archives
- Today
- Total
오늘도 더 나은 코드를 작성하였습니까?
Ktor Retrying failed requests 본문
기본적으로 Ktor 클라이언트는 네트워크 또는 서버 오류로 인해 실패한 request를 재시도하지 않습니다.
HttpRequestRetry 플러그인을 사용하여 실패한 요청에 대한 재시도 정책을 다양한 방법으로 구성할 수 있습니다.
- 재시도 횟수 지정
- 요청 재시도 조건
- 재시도 전에 요청 수정
Install HttpRequestRetry
val client = HttpClient(CIO) {
install(HttpRequestRetry)
}
Configure HttpRequestRetry
Basic retry configuration
val client = HttpClient(CIO) {
install(HttpRequestRetry) {
retryOnServerErrors(maxRetries = 5)
exponentialDelay()
}
}
retryOnServerErrors 함수는 서버에서 5xx 응답을 수신하고 재시도 횟수를 지정하는 경우 요청 재시도를 활성화.
exponentialDelay는 지수 백오프 알고리즘을 사용하여 계산되는 재시도 간의 지수 지연을 지정
Configure retry conditions
request 재시도 조건, delay를 지정할 수 있는 구성 설정도 있습니다
install(HttpRequestRetry) {
maxRetries = 5
retryIf { request, response ->
!response.status.isSuccess()
}
retryOnExceptionIf { request, cause ->
cause is NetworkError
}
delayMillis { retry ->
retry * 3000L
} // retries in 3, 6, 9, etc. seconds
}
Modify a request before retrying
재시도하기 전에 요청을 수정해야 하는 경우 modifyRequest를 사용.
install(HttpRequestRetry) {
// Retry conditions
modifyRequest { request ->
request.headers.append("x-retry-count", retryCount.toString())
}
}
'Ktor > Client' 카테고리의 다른 글
Ktor Response validation (0) | 2022.07.20 |
---|---|
Ktor User agent (0) | 2022.07.19 |
Ktor requests (0) | 2022.07.19 |
ktor(client Engines) (0) | 2022.07.15 |
Ktor(client) (0) | 2022.07.15 |