Compare commits

..

2 Commits

Author SHA1 Message Date
2920ba95ee Increased default timeout
All checks were successful
autoBIGS.engine/pipeline/head This commit looks good
autoBIGS.engine/pipeline/tag This commit looks good
2025-03-14 16:48:16 +00:00
14d760a266 Added optional parameter to change timeout
All checks were successful
autoBIGS.engine/pipeline/head This commit looks good
2025-03-14 16:09:01 +00:00
2 changed files with 6 additions and 10 deletions

View File

@ -15,7 +15,7 @@ from autobigs.engine.reading import read_fasta
from autobigs.engine.structures.alignment import PairwiseAlignment
from autobigs.engine.structures.genomics import NamedString
from autobigs.engine.structures.mlst import Allele, NamedMLSTProfile, AlignmentStats, MLSTProfile
from autobigs.engine.exceptions.database import BIGSdbResponseNotOkay, NoBIGSdbExactMatchesException, NoBIGSdbMatchesException, NoSuchBIGSdbDatabaseException
from autobigs.engine.exceptions.database import NoBIGSdbExactMatchesException, NoBIGSdbMatchesException, NoSuchBIGSdbDatabaseException
from Bio.Align import PairwiseAligner
@ -43,12 +43,13 @@ class BIGSdbMLSTProfiler(AbstractAsyncContextManager):
class RemoteBIGSdbMLSTProfiler(BIGSdbMLSTProfiler):
def __init__(self, database_api: str, database_name: str, scheme_id: int, retry_requests: int = 5):
def __init__(self, database_api: str, database_name: str, scheme_id: int, retry_requests: int = 5, timeout: int = 1800):
self._timeout = timeout
self._retry_limit = retry_requests
self._database_name = database_name
self._scheme_id = scheme_id
self._base_url = f"{database_api}/db/{self._database_name}/schemes/{self._scheme_id}/"
self._http_client = ClientSession(self._base_url, timeout=ClientTimeout(300))
self._http_client = ClientSession(self._base_url, timeout=ClientTimeout(timeout))
async def __aenter__(self):
return self
@ -99,10 +100,7 @@ class RemoteBIGSdbMLSTProfiler(BIGSdbMLSTProfiler):
)
yield result_allele if isinstance(sequence_string, str) else (sequence_string.name, result_allele)
else:
if response.status == 200:
raise NoBIGSdbMatchesException(self._database_name, self._scheme_id, sequence_string.name if isinstance(sequence_string, NamedString) else None)
else:
raise BIGSdbResponseNotOkay(sequence_response)
raise NoBIGSdbMatchesException(self._database_name, self._scheme_id, sequence_string.name if isinstance(sequence_string, NamedString) else None)
except (ConnectionError, ServerDisconnectedError, ClientOSError) as e: # Errors we will retry
last_error = e
success = False

View File

@ -3,13 +3,11 @@ from typing import Union
class BIGSDbDatabaseAPIException(Exception):
pass
class BIGSdbResponseNotOkay(BIGSDbDatabaseAPIException):
pass
class NoBIGSdbMatchesException(BIGSDbDatabaseAPIException):
def __init__(self, database_name: str, database_scheme_id: int, query_name: Union[None, str], *args):
self._query_name = query_name
super().__init__(f"No matches found with scheme with ID {database_scheme_id} in the database \"{database_name}\".", *args)
super().__init__(f"No matches found with scheme with ID {database_scheme_id} in the database \"{database_name}\".", *args)
def get_causal_query_name(self) -> Union[str, None]:
return self._query_name