1
0
mirror of https://github.com/vbondarevsky/Connector.git synced 2024-11-28 08:58:44 +02:00

Повторные попытки вызова HTTP с экспоненциальной задержкой #35

This commit is contained in:
Vladimir Bondarevskiy 2020-05-10 02:32:44 +03:00
parent 7c993bf3e5
commit 9cfaf8d580

View File

@ -26,6 +26,7 @@
- Установка и чтение Cookies
- Работа в рамках сессии с сохранением состояния (cookies, аутентификация и пр.)
- Переиспользование `HTTPСоединение` в рамках сессии
- Настраиваемые повторные попытки соединения/отправки запроса с экспоненциальной задержкой
- Работает в т.ч. и на мобильной платформе
- И многое другое
@ -395,3 +396,33 @@ Cookies.Добавить(Новый Структура("Наименование
- Сервер вернет нужный нам результат в виде `html`
Далее используя `Сессия` можно выполнять запросы к серверу и скачивать обновления.
## Повторные попытки соединения/отправки запроса
**Коннектор** может автоматически выполнять повторные попытки соединения/отправки запроса с задержкой.
Это бывает полезно если:
- Соединение нестабильное
- Сервер перегружен и может "пятисотить"
- Сервер находится на обслуживании (перезагрузка, изменение конфигов, обновление и т.п.)
- Сервер ограничивает количество запросов от клиента
Включить повторы можно с помощью параметра `ДополнительныеПараметры.МаксимальноеКоличествоПовторов`, задав значение больше 0.
Параметр `ДополнительныеПараметры.МаксимальноеВремяПовторов` позволяет ограничить суммарное время (таймауты + задержки между попытками).
Значение по умолчанию: 10 мин.
Длительность задержки между попытками:
- Растет экспоненциально (1 сек, 2 сек, 4 сек, 8 сек, 16 сек, ...). Можно регулировать с помощью параметра
`ДополнительныеПараметры.КоэффициентЭкспоненциальнойЗадержки`
- Для кодов состояний `413`, `429` или `503` в качестве задержки используется значение заголовка `Retry-After` (длительность в секундах или конкретная дата).
Параметр `ДополнительныеПараметры.ПовторятьДляКодовСостояний` позволяет задать коды состояний, при которых нужно выполнять повтор.
Если параметр не задан, повтор будет выполняться для всех кодов состояний >=`500`.
```bsl
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("МаксимальноеКоличествоПовторов", 5);
ДополнительныеПараметры.Вставить("Заголовки", Заголовки);
URL = "http://127.0.0.1:5000/retry_after_date";
Ответ = КоннекторHTTP.Get(URL, Неопределено, ДополнительныеПараметры);
```