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 |
Tags
- 안드로이드 디자인시스템
- 함수형프로그래밍
- Observer Pattern
- PrototypePattern
- 빌터패턴
- builderPattern
- 옵저버 패턴
- ㅓ
- 싱글톤
- 프로토타입 패턴
- 디자인패턴 #
- r
- Abstract Factory
- designPattern
- Singleton
- Design Pattern
- factory method
- F
- 팩토리 메소드
- Kotlin
- 디자인패턴
- 추상팩토리패턴
- compose
- El
- 코틀린
- material3
- Functional Programming
- 추상 팩토리
- android designsystem
- ㅋㅁ
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 |