* Timeout for external API calls

This commit is contained in:
Phil Zhitnikov 2024-01-03 01:32:41 +04:00
parent 3110017949
commit d0ae3dc0d7
4 changed files with 7 additions and 3 deletions

View File

@ -104,7 +104,7 @@ class CDEKClient:
retries += 1 retries += 1
prepared = self.session.prepare_request(request) prepared = self.session.prepare_request(request)
try: try:
r = self.session.send(prepared) r = self.session.send(prepared, timeout=settings.EXTERNAL_API_TIMEOUT_SEC)
except: except:
continue continue

View File

@ -27,7 +27,7 @@ class CurrencyAPIClient:
while retries < self.MAX_RETRIES: while retries < self.MAX_RETRIES:
retries += 1 retries += 1
prepared = self.session.prepare_request(request) prepared = self.session.prepare_request(request)
r = self.session.send(prepared) r = self.session.send(prepared, timeout=settings.EXTERNAL_API_TIMEOUT_SEC)
# TODO: handle/log errors # TODO: handle/log errors
return r return r

View File

@ -1,6 +1,7 @@
from urllib3.util import parse_url from urllib3.util import parse_url
from urllib.parse import urljoin, parse_qs from urllib.parse import urljoin, parse_qs
from django.conf import settings
import requests import requests
@ -25,7 +26,7 @@ class PoizonClient:
while retries < self.MAX_RETRIES: while retries < self.MAX_RETRIES:
retries += 1 retries += 1
prepared = self.session.prepare_request(request) prepared = self.session.prepare_request(request)
r = self.session.send(prepared) r = self.session.send(prepared, timeout=settings.EXTERNAL_API_TIMEOUT_SEC)
# TODO: handle/log errors # TODO: handle/log errors
return r return r

View File

@ -24,6 +24,7 @@ BASE_DIR = Path(__file__).resolve().parent.parent
# SECURITY WARNING: keep the secret key used in production secret! # SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '***REMOVED***' SECRET_KEY = '***REMOVED***'
# External API settings
CDEK_CLIENT_ID = '***REMOVED***' CDEK_CLIENT_ID = '***REMOVED***'
CDEK_CLIENT_SECRET = '***REMOVED***' CDEK_CLIENT_SECRET = '***REMOVED***'
@ -31,6 +32,8 @@ POIZON_TOKEN = '***REMOVED***'
CURRENCY_GETGEOIP_API_KEY = '***REMOVED***' CURRENCY_GETGEOIP_API_KEY = '***REMOVED***'
EXTERNAL_API_TIMEOUT_SEC = 60
# SECURITY WARNING: don't run with debug turned on in production! # SECURITY WARNING: don't run with debug turned on in production!
DEBUG = bool(int(os.environ.get("DJANGO_DEBUG") or 0)) DEBUG = bool(int(os.environ.get("DJANGO_DEBUG") or 0))
DISABLE_PERMISSIONS = False DISABLE_PERMISSIONS = False