From ceaa55b44ed8d82eb4cb96f8a30b17808720aa8b Mon Sep 17 00:00:00 2001 From: Sergio Date: Wed, 13 Nov 2024 13:53:30 +0100 Subject: [PATCH] =?UTF-8?q?Afegit=20retry=20per=20a=20les=20desc=C3=A0rreg?= =?UTF-8?q?ues?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zxdb.py | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/zxdb.py b/zxdb.py index 17862ff..3877e93 100644 --- a/zxdb.py +++ b/zxdb.py @@ -14,6 +14,8 @@ from mysql.connector import errorcode from unidecode import unidecode from urllib.parse import urlparse from urllib.request import urlretrieve +from requests.adapters import HTTPAdapter +from urllib3.util.retry import Retry # Cargar las variables de entorno desde el archivo .env load_dotenv() @@ -212,9 +214,7 @@ def process_elements(): # AƱade el prefijo a la url if elements[i]["url"].startswith("/zxdb"): - elements[i]["url"] = url_prefix["spectrum_computing"] + str( - elements[i]["url"] - ) + elements[i]["url"] = url_prefix["spectrum_computing"] + str(elements[i]["url"]) elif elements[i]["url"].startswith("/pub"): elements[i]["url"] = url_prefix["wos"] + str(elements[i]["url"][4:]) elif elements[i]["url"].startswith("/nvg"): @@ -228,7 +228,7 @@ def url_filename(url): return filename # Descarga un fichero a partir de una URL -def download_file(url, dest): +'''def download_file(url, dest): try: r = requests.get(url) if r.status_code != 200: @@ -247,7 +247,24 @@ def download_file(url, dest): except requests.exceptions.RequestException as e: # catastrophic error. bail. - raise SystemExit(e) + raise SystemExit(e)''' + + + +def download_file(url, destination): + session = requests.Session() + retries = Retry(total=3, backoff_factor=1, status_forcelist=[500, 502, 503, 504]) + session.mount('https://', HTTPAdapter(max_retries=retries)) + + try: + response = session.get(url, timeout=10) + response.raise_for_status() + with open(destination, 'wb') as file: + file.write(response.content) + return True + except requests.exceptions.RequestException as e: + logging.error(f"Error al descargar el archivo: {e}") + return False # Descomprime los ficheros que coinciden con la lista de extensiones def unzip_file(src, dst):