From 51e3a6f86a8f0cf044cf6190bd278f23f2283581 Mon Sep 17 00:00:00 2001 From: Ekaterina Sakharova Date: Mon, 3 Jun 2024 13:38:02 +0100 Subject: [PATCH 1/2] Add skipping mechanism for list of studies --- .../commands/populate_metagenomics_exchange.py | 3 +++ emgapi/metagenomics_exchange.py | 14 ++++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/emgapi/management/commands/populate_metagenomics_exchange.py b/emgapi/management/commands/populate_metagenomics_exchange.py index da7e7c252..258c3137a 100644 --- a/emgapi/management/commands/populate_metagenomics_exchange.py +++ b/emgapi/management/commands/populate_metagenomics_exchange.py @@ -131,6 +131,9 @@ def process_to_index_and_update_records(self, analyses_to_index_and_update): mgya=annotation_job.accession, sequence_accession=sequence_accession, ) + if not response: + logging.info(f"Error occured {annotation_job}") + continue if response.ok: logging.info(f"Successfully added {annotation_job}") registry_id, metadata_match = self.mgx_api.check_analysis( diff --git a/emgapi/metagenomics_exchange.py b/emgapi/metagenomics_exchange.py index 55ad381a3..010121765 100644 --- a/emgapi/metagenomics_exchange.py +++ b/emgapi/metagenomics_exchange.py @@ -108,14 +108,20 @@ def add_analysis(self, mgya: str, sequence_accession: str): data = self.generate_metadata(mgya, sequence_accession) try: response = self.post_request(endpoint="datasets", data=data) + response.raise_for_status() # Ensure we raise for HTTP errors + return response except HTTPError as http_error: try: response_json = http_error.response.json() logging.error(f"API response content: {response_json}") - except: - pass - raise http_error - return response + except ValueError: # Catch JSON decoding errors + logging.error(f"Failed to decode JSON from response: {http_error.response.text}") + except Exception as e: + logging.error(f"Unexpected error: {e}") + + # Log the HTTP status code and the error message + logging.error(f"HTTPError occurred: {http_error}") + return None def check_analysis(self, mgya: str, sequence_accession: str, metadata=None): """Check if a sequence exists in the M. Exchange From 4a1c04b840df3dcf608807d2d7fbb9a2f680c639 Mon Sep 17 00:00:00 2001 From: Ekaterina Sakharova Date: Mon, 3 Jun 2024 14:49:16 +0100 Subject: [PATCH 2/2] fixes after review --- emgapi/management/commands/populate_metagenomics_exchange.py | 2 +- emgapi/metagenomics_exchange.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/emgapi/management/commands/populate_metagenomics_exchange.py b/emgapi/management/commands/populate_metagenomics_exchange.py index 258c3137a..269addca9 100644 --- a/emgapi/management/commands/populate_metagenomics_exchange.py +++ b/emgapi/management/commands/populate_metagenomics_exchange.py @@ -132,7 +132,7 @@ def process_to_index_and_update_records(self, analyses_to_index_and_update): sequence_accession=sequence_accession, ) if not response: - logging.info(f"Error occured {annotation_job}") + logging.warning(f"Error occurred {annotation_job}") continue if response.ok: logging.info(f"Successfully added {annotation_job}") diff --git a/emgapi/metagenomics_exchange.py b/emgapi/metagenomics_exchange.py index 010121765..500ce133d 100644 --- a/emgapi/metagenomics_exchange.py +++ b/emgapi/metagenomics_exchange.py @@ -18,7 +18,7 @@ import requests from django.conf import settings -from requests.exceptions import HTTPError +from requests.exceptions import HTTPError, JSONDecodeError class MetagenomicsExchangeAPI: @@ -114,7 +114,7 @@ def add_analysis(self, mgya: str, sequence_accession: str): try: response_json = http_error.response.json() logging.error(f"API response content: {response_json}") - except ValueError: # Catch JSON decoding errors + except JSONDecodeError: # Catch JSON decoding errors logging.error(f"Failed to decode JSON from response: {http_error.response.text}") except Exception as e: logging.error(f"Unexpected error: {e}")