diff --git a/README.md b/README.md index b0df5c9..c46238f 100644 --- a/README.md +++ b/README.md @@ -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, Неопределено, ДополнительныеПараметры); +```