From 7357a9e8b0e24489583b85eef0d672a897277852 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joan=20H=C3=A9risson?= Date: Fri, 12 Dec 2025 15:13:11 +0100 Subject: [PATCH 1/2] chore(rpextractsink.py): retry connecting to MetNetX when it fails --- rptools/rpextractsink/rpextractsink.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/rptools/rpextractsink/rpextractsink.py b/rptools/rpextractsink/rpextractsink.py index a71ca8c..ebce4eb 100644 --- a/rptools/rpextractsink/rpextractsink.py +++ b/rptools/rpextractsink/rpextractsink.py @@ -11,6 +11,7 @@ from os import path as os_path from requests import get as r_get from re import search as re_search +from time import sleep from rr_cache import rrCache from rptools.rpfba import cobra_format @@ -135,6 +136,25 @@ def get_inchi_from_crossid( except Exception as e: logger.warning(f'Connection lost from {url_search}') return '' + logger.debug(f'Page retrieved from MetaNetX for {id}: {page.url}') + logger.debug(f'Page content: {page.text}') + # If server 'too busy', wait and retry 3 times + retries = 3 + wait_time = 5 # seconds + attempt = 0 + while 'please try again' in page.text.lower() and attempt < retries: + logger.debug(f'Server is too busy. Retrying in {wait_time} seconds... (Attempt {attempt + 1} of {retries})') + sleep(wait_time) + try: + page = r_get(f'{url_search}?query={id}') + except Exception as e: + logger.warning(f'Connection lost from {url_search}') + return '' + attempt += 1 + if 'please try again' in page.text.lower(): + logger.debug('Server is still too busy after multiple attempts. Aborting retrieval.') + return '' + logger.debug(f'Final page content after retries: {page.text}') url_crossid = re_search(r'/chem_info/\w+', page.text).group() return get_inchi_from_url(f'{url_mnx}{url_crossid}', logger) From 37a2f1ab14829a795d76fc9f9cbe7f8dfcfe0822 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joan=20H=C3=A9risson?= Date: Fri, 12 Dec 2025 15:17:19 +0100 Subject: [PATCH 2/2] chore(rpcompletion.py): catch exception when file not found --- rptools/rpcompletion/rpcompletion.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rptools/rpcompletion/rpcompletion.py b/rptools/rpcompletion/rpcompletion.py index f16addb..b2fa7c4 100644 --- a/rptools/rpcompletion/rpcompletion.py +++ b/rptools/rpcompletion/rpcompletion.py @@ -548,8 +548,8 @@ def __read_pathways( try: df = pd.read_csv(infile) - except pd.errors.EmptyDataError as e: - logger.error(f'File {infile} is empty: {e}') + except (pd.errors.EmptyDataError, FileNotFoundError) as e: + logger.error(f'File {infile} is empty or does not exist: {e}') return {}, {} check = __check_pathways(df)