1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- package httpclient
- import (
- "context"
- "net/http"
- "time"
- )
- const (
- // DefaultRetryTimes 如果请求失败,最多重试3次
- DefaultRetryTimes = 3
- // DefaultRetryDelay 在重试前,延迟等待100毫秒
- DefaultRetryDelay = time.Millisecond * 100
- )
- // Verify parse the body and verify that it is correct
- type RetryVerify func(body []byte) (shouldRetry bool)
- func shouldRetry(ctx context.Context, httpCode int) bool {
- select {
- case <-ctx.Done():
- return false
- default:
- }
- switch httpCode {
- case
- _StatusReadRespErr,
- _StatusDoReqErr,
- http.StatusRequestTimeout,
- http.StatusLocked,
- http.StatusTooEarly,
- http.StatusTooManyRequests,
- http.StatusServiceUnavailable,
- http.StatusGatewayTimeout:
- return true
- default:
- return false
- }
- }
|