From cbc2419bfe1830d6434fec320347bc6615b1d07b 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 4446ed7..5cd71dd 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 = 'django-insecure-e&9j(^9z7p7qs-@d)vftjz4%xqu0#3mmn@+$wzwh!%-dwjecm-' +# External API settings CDEK_CLIENT_ID = 'wZWtjnWtkX7Fin2tvDdUE6eqYz1t1GND' CDEK_CLIENT_SECRET = 'lc2gmrmK5s1Kk6FhZbNqpQCaATQRlsOy' @@ -31,6 +32,8 @@ POIZON_TOKEN = 'IRwNgBxb8YQ' CURRENCY_GETGEOIP_API_KEY = 'b8ab1ad89adbb1559cb8ccfea7ee03e9123986b7' +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