Realiza sucesivos intentos de request a una url dada, intentándolo hasta que recibe un status 200 (OK)
    y el texto recibido es mayor que MIN_LEN_REQUEST (=10).
    Resulta útil cuando se están realizando múltiples requests al mismo servidor (por velocidad), y no siempre
    las respuestas que emite son correctas.
    :param url:
    :param headers:
    :param num_retries:
    :param timeout:
    :param params_request:
    :param json_req:

def request_data_url(url, headers=None, num_retries=NUM_RETRIES, timeout=TIMEOUT,
                     params_request=None, json_req=False, **kwargs_req):
    """
    Realiza sucesivos intentos de request a una url dada, intentándolo hasta que recibe un status 200 (OK)
    y el texto recibido es mayor que MIN_LEN_REQUEST (=10).
    Resulta útil cuando se están realizando múltiples requests al mismo servidor (por velocidad), y no siempre
    las respuestas que emite son correctas.
    :param url:
    :param headers:
    :param num_retries:
    :param timeout:
    :param params_request:
    :param json_req:
    """
    count, status, response = 0, -1, None
    kwargs_req.update(timeout=timeout)
    while count < num_retries:
        try:
            resp = requests.get(url, headers=headers, params=params_request, **kwargs_req)
            status = resp.status_code
            if status == 200:
                if json_req:
                    response = resp.json()
                else:
                    response = resp.content.decode()
                if json_req or len(response) > MIN_LEN_REQUEST:
                    break  # SALIDA BUCLE WHILE
            elif status == 503:  # HTTP 503 Service unavailable
                print('RECIBIDO ERROR HTTP 503 Service unavailable en url:"{}". Esperando 10 segs'.format(url))
                time.sleep(10)
        except (ConnectionError, ConnectTimeout, HTTPError) as e:
            if count == num_retries - 1:
                print('ERROR: ' + str(e) + ' ¿No hay conexión de internet??')
                print(e.__name__)
                logging.error('ERROR: ' + str(e) + ' ¿No hay conexión de internet??')
            time.sleep(1)
        except JSONDecodeError as e:
            if count == num_retries - 1:
                # print('ERROR: {}\n-> RESPONSE: {}\n{}'.format(e, resp, resp.content))
                # logging.error('ERROR: {}\n-> RESPONSE: {}\n{}'.format(e, resp, resp.content))
                print('ERROR: {}'.format(e))
                logging.error('ERROR: {}'.format(e))
            time.sleep(1)
        except TypeError as e:
            print('TypeError')
            logging.error(str(e))
            print(str(e))
        except Exception as e:
            if count > 0:
                logging.error('%luº Exception no reconocida: %s!!' % (count + 1, type(e)))
                print('%luº Exception no reconocida: %s!!' % (count + 1, type(e)))
                print(str(e))
        count += 1
    if count > 0 and count == num_retries:
        print('NO SE HA PODIDO OBTENER LA INFO EN %s' % url)
        logging.error('NO SE HA PODIDO OBTENER LA INFO EN %s' % url)
    return status, response