88
99import lib .core as constance
1010import requests .packages .urllib3
11+ import requests .adapters
1112from lib .core .exceptions import AppException
1213from lib .core .serviceproviders import SuerannotateServiceProvider
1314from requests .exceptions import HTTPError
15+ from lib .infrastructure .helpers import timed_lru_cache
1416
1517requests .packages .urllib3 .disable_warnings ()
1618
1719
1820class BaseBackendService (SuerannotateServiceProvider ):
1921 AUTH_TYPE = "sdk"
2022 PAGINATE_BY = 100
23+ MAX_RETRY = 3
2124
2225 """
2326 Base service class
@@ -31,8 +34,8 @@ def __init__(self, api_url: str, auth_token: str, logger, paginate_by=None):
3134 self .team_id = auth_token .split ("=" )[- 1 ]
3235 self ._session = None
3336
34- @property
35- def session (self ):
37+ @timed_lru_cache ( seconds = 360 )
38+ def get_session (self ):
3639 if not self ._session :
3740 self ._session = requests .Session ()
3841 self ._session .headers .update (self .default_headers )
@@ -77,8 +80,9 @@ def _request(
7780 ) -> requests .Response :
7881 kwargs = {"json" : data } if data else {}
7982 headers_dict = self .default_headers .copy ()
80- self .session .headers .update (headers if headers else {})
81- method = getattr (self .session , method )
83+ session = self .get_session ()
84+ session .headers .update (headers if headers else {})
85+ method = getattr (session , method )
8286 with self .safe_api ():
8387 response = method (
8488 url , ** kwargs , headers = headers_dict , params = params , timeout = 60 ,
0 commit comments