RetryPolicy
in package
Политика повторного выполнения запроса.
Определяет число повторов, коды ответов, при которых повтор осмыслен
(по умолчанию 429 и 5xx), а также реагирование на сетевые сбои и таймауты.
Расчёт паузы делегируется Backoff; при наличии заголовка Retry-After
он имеет приоритет над расчётной задержкой.
Table of Contents
Methods
- __construct() : mixed
- delayFor() : float
- Пауза перед повтором указанной попытки.
- maxRetries() : int
- Максимальное число повторов.
- respectsRetryAfter() : bool
- Учитывать ли заголовок `Retry-After`.
- retriesNetworkError() : bool
- Повторять ли при сетевом сбое.
- retriesStatus() : bool
- Нужен ли повтор для указанного статуса ответа.
- retriesTimeout() : bool
- Повторять ли при таймауте.
Methods
__construct()
public
__construct([int $maxRetries = 0 ][, Backoff $backoff = new Backoff() ][, array<int, int> $retryStatuses = [429, 500, 502, 503, 504] ][, bool $retryOnNetworkError = true ][, bool $retryOnTimeout = true ][, bool $respectRetryAfter = true ]) : mixed
Parameters
- $maxRetries : int = 0
-
максимальное число повторов (0 — повторов нет)
- $backoff : Backoff = new Backoff()
-
расчёт паузы между повторами
- $retryStatuses : array<int, int> = [429, 500, 502, 503, 504]
-
HTTP-статусы, при которых повтор осмыслен
- $retryOnNetworkError : bool = true
-
повторять ли при сетевых сбоях
- $retryOnTimeout : bool = true
-
повторять ли при таймаутах
- $respectRetryAfter : bool = true
-
учитывать ли заголовок
Retry-After
delayFor()
Пауза перед повтором указанной попытки.
public
delayFor(int $attempt[, float $randomFraction = -1.0 ]) : float
Parameters
- $attempt : int
-
номер завершившейся попытки (>= 1)
- $randomFraction : float = -1.0
-
доля джиттера [0, 1) для детерминизма в тестах
Return values
float —задержка в секундах
maxRetries()
Максимальное число повторов.
public
maxRetries() : int
Return values
int —число повторов
respectsRetryAfter()
Учитывать ли заголовок `Retry-After`.
public
respectsRetryAfter() : bool
Return values
bool —true, если значение Retry-After имеет приоритет
retriesNetworkError()
Повторять ли при сетевом сбое.
public
retriesNetworkError() : bool
Return values
bool —true, если сетевые сбои повторяются
retriesStatus()
Нужен ли повтор для указанного статуса ответа.
public
retriesStatus(int $status) : bool
Parameters
- $status : int
-
код ответа
Return values
bool —true, если статус входит в набор повторяемых
retriesTimeout()
Повторять ли при таймауте.
public
retriesTimeout() : bool
Return values
bool —true, если таймауты повторяются