Cuando se usa Net::HTTP
como adaptador, los usuarios se sorprenden con la estrategia de reintento proporcionada por Net::HTTP
. Esto trae a diferentes "problemas" (por ejemplo, # 612 y # 771).
No hay mucho que podamos hacer para Ruby <= 2.4, sin embargo, Ruby 2.5 proporciona una nueva configuración max_retries
para Net::HTTP
por lo que Faraday debería configurarla automáticamente cuando esté disponible.
Consulte los números 612 y 771.
He estado analizando este problema. Un enfoque mencionado en el n. ° 771 es establecer el valor predeterminado en 0, pero cambiarlo según la cantidad de reintentos configurados. Tendríamos que hacer que el middleware Retry conozca el adaptador subyacente (ya que algunos adaptadores podrían no admitir esto) y aplicar condicionalmente esta lógica en env
. El adaptador también debería conocer la cantidad de reintentos.
Como alternativa a dicho enfoque, podemos configurarlo para que no realice reintentos, manteniendo la lógica de reintento confinada al middleware Retry. Cualquiera que sea el resultado, estaré más que feliz de recoger esto @iMacTia .
Definitivamente estaba pensando en la segunda opción.
Ya tenemos el middleware Retry que puede encargarse de reintentar solicitudes fallidas.
Los adaptadores (en este caso Net :: HTTP) nunca deben reintentar las solicitudes por su cuenta.
Todo lo que tenemos que hacer en este caso es decirle al adaptador Net :: HTTP que establezca max_retries
en 0, si esta propiedad está disponible, por supuesto
@iMacTia - No podría estar más de acuerdo. En ese caso, recogeré esto.