La política de reintento de solicitud de volea no considera el tiempo de espera

11

He configurado 1500 como initialTimeoutMs en DefaultRetryPolicy como se muestra a continuación, pero no considera el tiempo de espera:

request.setRetryPolicy(new DefaultRetryPolicy(1500
        , DefaultRetryPolicy.DEFAULT_MAX_RETRIES
        , DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

Desconecté el WiFi en mi dispositivo para probar su tiempo de espera y vi estos tiempos en Logcat :

2019-12-16 14:28:15.892 I/MyClass: request sent
2019-12-16 14:28:35.930 I/MyClass: request caught onError

¡Tomó más de 20 segundos mientras esperaba capturar onResponse o onError después de 1.5 segundos!

Alireza Noorali
fuente
Creo que hay una lógica de reintento después de un retroceso. Entonces, la solicitud se envía, después de 1,5 segundos, se agota el tiempo de espera y luego vuelve a intentarlo después de un tiempo aleatorio. En general, el número de retiros es DefaultRetryPolicy.DEFAULT_MAX_RETRIES
Abhishek Ranjan
¿Cuál es su valor para max_tries y backoff_multiplies?
Karan Khurana
Ambos tienen valores predeterminados. en DefaultRetryPolicy.java:public static final int DEFAULT_MAX_RETRIES = 1; public static final float DEFAULT_BACKOFF_MULT = 1f;
Alireza Noorali

Respuestas:

0

Use 5 segundos porque 15 segundos es mucho más para dar tiempo de espera.

int TIME_OUT = 500; //use 5 sec it will work fine with it..

request.setRetryPolicy(new DefaultRetryPolicy(
    TIME_OUT, 
    DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
    DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

fuente