Compare commits

..

2 Commits

Author SHA1 Message Date
2920ba95ee Increased default timeout 2025-03-14 16:48:16 +00:00
14d760a266 Added optional parameter to change timeout 2025-03-14 16:09:01 +00:00
2 changed files with 6 additions and 10 deletions
src/autobigs/engine
analysis
exceptions

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

@ -3,8 +3,6 @@ from typing import Union
class BIGSDbDatabaseAPIException(Exception): class BIGSDbDatabaseAPIException(Exception):
pass pass
class BIGSdbResponseNotOkay(BIGSDbDatabaseAPIException):
pass
class NoBIGSdbMatchesException(BIGSDbDatabaseAPIException): class NoBIGSdbMatchesException(BIGSDbDatabaseAPIException):
def __init__(self, database_name: str, database_scheme_id: int, query_name: Union[None, str], *args): def __init__(self, database_name: str, database_scheme_id: int, query_name: Union[None, str], *args):