From 5f4008f03aa445769a8871bca114dffce6a52a8c Mon Sep 17 00:00:00 2001 From: Adam Wolfman <47123183+awolfden@users.noreply.github.com> Date: Wed, 3 Apr 2024 13:04:47 -0600 Subject: [PATCH] Python SDK: Add 25 second default timeout to requests (#247) * Add 25 second default timeout to requests * Update 404 response * Make request timeout configuratble by end user * Remove unused declaration --- workos/__init__.py | 1 + workos/utils/request.py | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/workos/__init__.py b/workos/__init__.py index 8158207b..2c29f6a8 100644 --- a/workos/__init__.py +++ b/workos/__init__.py @@ -6,3 +6,4 @@ api_key = os.getenv("WORKOS_API_KEY") client_id = os.getenv("WORKOS_CLIENT_ID") base_api_url = "https://api.workos.com/" +request_timeout = 25 diff --git a/workos/utils/request.py b/workos/utils/request.py index 65b4ad2e..36276bc6 100644 --- a/workos/utils/request.py +++ b/workos/utils/request.py @@ -29,6 +29,10 @@ class RequestHelper(object): def __init__(self): self.set_base_api_url(workos.base_api_url) + self.set_request_timeout(workos.request_timeout) + + def set_request_timeout(self, request_timeout): + self.request_timeout = request_timeout def set_base_api_url(self, base_api_url): """Creates an accessible template for constructing the URL for an API request. @@ -73,9 +77,13 @@ def request( request_fn = getattr(requests, method) if method == REQUEST_METHOD_GET: - response = request_fn(url, headers=headers, params=params) + response = request_fn( + url, headers=headers, params=params, timeout=self.request_timeout + ) else: - response = request_fn(url, headers=headers, json=params) + response = request_fn( + url, headers=headers, json=params, timeout=self.request_timeout + ) response_json = None content_type = ( @@ -99,7 +107,9 @@ def request( raise NotFoundException(response) error = response_json.get("error") error_description = response_json.get("error_description") - raise BadRequestException(response) + raise BadRequestException( + response, error=error, error_description=error_description + ) elif status_code >= 500 and status_code < 600: raise ServerException(response)