При использовании Net::HTTP
качестве адаптера пользователи удивляются стратегии повторных попыток, предоставляемой Net::HTTP
. Это приводит к различным «проблемам» (например, №612 и №771).
Мы мало что можем сделать для Ruby <= 2.4, однако Ruby 2.5 предоставляет новую конфигурацию max_retries
для Net::HTTP
поэтому Фарадей должен устанавливать ее автоматически, когда она доступна.
См. Проблемы №612 и №771.
Я смотрел на эту проблему. Один из подходов, упомянутых в # 771, - установить значение по умолчанию на 0, но изменить его в зависимости от настроенного количества повторных попыток. Нам нужно будет сделать так, чтобы промежуточное ПО Retry знало о базовом адаптере (так как некоторые адаптеры могут не поддерживать это) и условно применить эту логику в env
. Адаптер также должен знать о количестве повторных попыток.
В качестве альтернативы указанному подходу мы можем настроить его так, чтобы он не выполнял повторных попыток, вместо этого сохраняя логику повторных попыток ограниченным промежуточным программным обеспечением Retry. Каким бы ни был результат, я был бы более чем счастлив забрать это @iMacTia .
Я определенно думал о втором варианте.
У нас уже есть промежуточное программное обеспечение Retry, которое может позаботиться о повторных попытках неудачных запросов.
Адаптеры (в данном случае Net :: HTTP) никогда не должны повторять запросы самостоятельно.
Все, что нам нужно сделать в этом случае, это указать адаптеру Net :: HTTP установить max_retries
равным 0, если это свойство доступно, конечно
@iMacTia - Я не могу не согласиться. В таком случае я возьму это.