Skip to content

Commit dc3fc08

Browse files
committed
[IMP] delivery_seur_atlas: Implement timeouts from request calls
1 parent 6105ffc commit dc3fc08

File tree

1 file changed

+36
-26
lines changed

1 file changed

+36
-26
lines changed

delivery_seur_atlas/models/seur_request_atlas.py

Lines changed: 36 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -72,21 +72,26 @@ def _log_request(self):
7272
def _set_token(self):
7373
"""In order to operate, we should gather a token from the API. This token
7474
lasts for 30 seconds. After that, we must gather a new one"""
75-
self.response = requests.post(
76-
urljoin(self.api_url, "/pic_token"),
77-
data={
78-
"grant_type": "password",
79-
"client_id": self.client_id,
80-
"client_secret": self.secret,
81-
"username": self.user,
82-
"password": self.password,
83-
},
84-
)
85-
self._log_request()
86-
if not self.response.ok:
87-
self.error = self.response.json()
88-
return
89-
self.token = self.response.json()["access_token"]
75+
try:
76+
self.response = requests.post(
77+
urljoin(self.api_url, "/pic_token"),
78+
data={
79+
"grant_type": "password",
80+
"client_id": self.client_id,
81+
"client_secret": self.secret,
82+
"username": self.user,
83+
"password": self.password,
84+
},
85+
timeout=30,
86+
)
87+
self._log_request()
88+
if not self.response.ok:
89+
self.error = self.response.json()
90+
return
91+
self.token = self.response.json()["access_token"]
92+
except requests.exceptions.Timeout:
93+
self.error = "Request timed out. Please try again later."
94+
_logger.error(self.error)
9095

9196
def request(self, request_method, seur_method, **kwargs):
9297
"""Raw query. It can be used as it is calling any API method, although its
@@ -105,17 +110,22 @@ def request(self, request_method, seur_method, **kwargs):
105110
elif request_method == "GET":
106111
request_params["params"] = {**kwargs}
107112
_logger.debug(f"SEUR Request to {seur_method}: {request_params}")
108-
self.response = requests.request(**request_params)
109-
_logger.debug(f"SEUR Response from {seur_method}: {self.response.content}")
110-
self._log_request()
111-
if not self.response.ok:
112-
self.error = "\n".join(
113-
[
114-
f"{error['title']} ({error['status']}): {error['detail']}"
115-
for error in self.response.json().get("errors")
116-
]
117-
)
118-
raise UserError(f"SEUR ERROR: \n\n{self.error}")
113+
try:
114+
self.response = requests.request(**request_params, timeout=30)
115+
_logger.debug(f"SEUR Response from {seur_method}: {self.response.content}")
116+
self._log_request()
117+
if not self.response.ok:
118+
self.error = "\n".join(
119+
[
120+
f"{error['title']} ({error['status']}): {error['detail']}"
121+
for error in self.response.json().get("errors")
122+
]
123+
)
124+
raise UserError(f"SEUR ERROR: \n\n{self.error}")
125+
except requests.exceptions.Timeout:
126+
self.error = "Request timed out. Please try again later."
127+
_logger.error(self.error)
128+
raise UserError(self.error) from None
119129

120130
# SEUR ATLAS API METHODS
121131

0 commit comments

Comments
 (0)