diff --git a/emgapi/management/commands/populate_metagenomics_exchange.py b/emgapi/management/commands/populate_metagenomics_exchange.py index da7e7c252..269addca9 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.warning(f"Error occurred {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..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: @@ -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 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}") + + # 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