Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ErrRequestEmpty = errors.New("request is empty")
Functions ¶
This section is empty.
Types ¶
type LimiterStore ¶
type LimiterStore interface { // GetLimiter возвращает WaitLimiter для дальнейшего вызова его в запросе Tripper'а // На вход получет запрос от executor'а, по которому можно определить, например // токен доступа, по которому делается запрос, тем самым, создав лимитер под каждый // токен отдельно GetLimiter(*request.Request) (WaitLimiter, error) }
LimiterStore это интерфейс для хранения всех лимитеров Вы можете реализовать свой собственный store, чтобы точнее контролировать лимитирование запросов, а также используемую оперативную память
func NewLimiterStoreTtlCache ¶
func NewLimiterStoreTtlCache( rps int, limiterExpiration, cleanupCacheInterval time.Duration, ) LimiterStore
NewLimiterStoreTtlCache returns limiter's store with ttl cache storage
type LimiterTripper ¶
type LimiterTripper http.RoundTripper
LimiterTripper type
func New ¶
func New(rps int, limiterExpiration, cacheCleanupInterval time.Duration) LimiterTripper
Возвращает новый лимитер. rps - Количество запросов в секунду на один токен limiterExpiration - Время жизни одного лимитера в памяти. После истечения этого времени, он будет пересоздан или автоматически удален. cacheCleanupInterval - Интервал, указывающий, как часто нужно отчищать лимитеры, срок жизни которых истек
func NewWithStore ¶
func NewWithStore(store LimiterStore) LimiterTripper
NewWithStore используется для переназначения хранилища лимитеров и более точного определения алгоритма лимитеров
type Tripper ¶
type Tripper struct { Tripper http.RoundTripper // contains filtered or unexported fields }
Объект, хранящий в себе все лимитеры запросов на конкретный токен. Чтобы не засорять память, в случае, если у вас много (сотни или тысячи) различных токенов, в этом пакете используется кеширование лимитеров. Лимитеры токенов регулярно удаляются из памяти.
type WaitLimiter ¶
var DefaultLimiter WaitLimiter = &emptyLimiter{}