From d0ae3dc0d75225ce8eb95eb00215449a54b7d4cd Mon Sep 17 00:00:00 2001 From: phzhik Date: Wed, 3 Jan 2024 01:32:41 +0400 Subject: [PATCH] * Timeout for external API calls --- external_api/cdek.py | 2 +- external_api/currency.py | 2 +- external_api/poizon.py | 3 ++- poizonstore/settings.py | 3 +++ 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/external_api/cdek.py b/external_api/cdek.py index 6ef4eef..f969017 100644 --- a/external_api/cdek.py +++ b/external_api/cdek.py @@ -104,7 +104,7 @@ class CDEKClient: retries += 1 prepared = self.session.prepare_request(request) try: - r = self.session.send(prepared) + r = self.session.send(prepared, timeout=settings.EXTERNAL_API_TIMEOUT_SEC) except: continue diff --git a/external_api/currency.py b/external_api/currency.py index cc88bd0..34f1af1 100644 --- a/external_api/currency.py +++ b/external_api/currency.py @@ -27,7 +27,7 @@ class CurrencyAPIClient: while retries < self.MAX_RETRIES: retries += 1 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 return r diff --git a/external_api/poizon.py b/external_api/poizon.py index d27e992..7379fde 100644 --- a/external_api/poizon.py +++ b/external_api/poizon.py @@ -1,6 +1,7 @@ from urllib3.util import parse_url from urllib.parse import urljoin, parse_qs +from django.conf import settings import requests @@ -25,7 +26,7 @@ class PoizonClient: while retries < self.MAX_RETRIES: retries += 1 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 return r diff --git a/poizonstore/settings.py b/poizonstore/settings.py index 2a5543e..303ab68 100644 --- a/poizonstore/settings.py +++ b/poizonstore/settings.py @@ -24,6 +24,7 @@ BASE_DIR = Path(__file__).resolve().parent.parent # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = '***REMOVED***' +# External API settings CDEK_CLIENT_ID = '***REMOVED***' CDEK_CLIENT_SECRET = '***REMOVED***' @@ -31,6 +32,8 @@ POIZON_TOKEN = '***REMOVED***' CURRENCY_GETGEOIP_API_KEY = '***REMOVED***' +EXTERNAL_API_TIMEOUT_SEC = 60 + # SECURITY WARNING: don't run with debug turned on in production! DEBUG = bool(int(os.environ.get("DJANGO_DEBUG") or 0)) DISABLE_PERMISSIONS = False