Skip to content

Commit d899982

Browse files
committed
fix(filestore/persist): add api rest connection timeouts
1 parent b702279 commit d899982

File tree

2 files changed

+14
-10
lines changed

2 files changed

+14
-10
lines changed

users/filestore.py

+10-8
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
from .utils import get_rest_host
99

10+
FS_API_TIMEOUT = 15 # 15 seconds
11+
1012

1113
def get_user_scope(user: User):
1214
return f"./users/{user.username}"
@@ -42,7 +44,7 @@ def use_filestore_auth(user: User):
4244
def get_filestore_token(user_login, host, verify):
4345
try:
4446
r_userlogin = requests.get(f"https://{host}/storemng/api/login",
45-
data=json.dumps(user_login), verify=verify)
47+
data=json.dumps(user_login), verify=verify, timeout=FS_API_TIMEOUT)
4648
r_userlogin.raise_for_status()
4749
except (requests.exceptions.ConnectionError, requests.exceptions.HTTPError) as err:
4850
print("{0}: ".format(err))
@@ -62,7 +64,7 @@ def add_filestore_auth(user: User):
6264
# get user defaults from global settings
6365
try:
6466
r_gset = requests.get(f"https://{host}/storemng/api/settings",
65-
headers={"X-Auth": admin_token}, verify=verify)
67+
headers={"X-Auth": admin_token}, verify=verify, timeout=FS_API_TIMEOUT)
6668
r_gset.raise_for_status()
6769
except (requests.exceptions.ConnectionError, requests.exceptions.HTTPError) as err:
6870
print("{0}: ".format(err))
@@ -84,7 +86,7 @@ def add_filestore_auth(user: User):
8486
# add new user to filestore db
8587
try:
8688
r_useradd = requests.post(f"https://{host}/storemng/api/users",
87-
data=json.dumps(fs_user), headers={"X-Auth": admin_token}, verify=verify)
89+
data=json.dumps(fs_user), headers={"X-Auth": admin_token}, verify=verify, timeout=FS_API_TIMEOUT)
8890
r_useradd.raise_for_status()
8991
except (requests.exceptions.ConnectionError, requests.exceptions.HTTPError) as err:
9092
print("{0}: ".format(err))
@@ -111,7 +113,7 @@ def set_filestore_scope(user: User):
111113
payload = jwt.decode(fs_user_token, options={"verify_signature": False})
112114
try:
113115
r_user = requests.get(f"https://{host}/storemng/api/users/{payload['user']['id']}",
114-
headers={"X-Auth": admin_token}, verify=verify)
116+
headers={"X-Auth": admin_token}, verify=verify, timeout=FS_API_TIMEOUT)
115117
r_user.raise_for_status()
116118
except (requests.exceptions.ConnectionError, requests.exceptions.HTTPError) as err:
117119
print("{0}: ".format(err))
@@ -130,7 +132,7 @@ def set_filestore_scope(user: User):
130132
}
131133
try:
132134
r_useradd = requests.put(f"https://{host}/storemng/api/users/{edit_user['id']}",
133-
data=json.dumps(fs_user), headers={"X-Auth": admin_token}, verify=verify)
135+
data=json.dumps(fs_user), headers={"X-Auth": admin_token}, verify=verify, timeout=FS_API_TIMEOUT)
134136
r_useradd.raise_for_status()
135137
except (requests.exceptions.ConnectionError, requests.exceptions.HTTPError) as err:
136138
print("{0}: ".format(err))
@@ -157,7 +159,7 @@ def delete_filestore_user(user: User):
157159
payload = jwt.decode(fs_user_token, options={"verify_signature": False})
158160
try:
159161
r_user = requests.get(f"https://{host}/storemng/api/users/{payload['user']['id']}",
160-
headers={"X-Auth": admin_token}, verify=verify)
162+
headers={"X-Auth": admin_token}, verify=verify, timeout=FS_API_TIMEOUT)
161163
r_user.raise_for_status()
162164
except (requests.exceptions.ConnectionError, requests.exceptions.HTTPError) as err:
163165
print("{0}: ".format(err))
@@ -167,15 +169,15 @@ def delete_filestore_user(user: User):
167169
if del_user['scope'] == get_user_scope(user):
168170
try: # only user scope files can be removed, not root
169171
r_filesdel = requests.delete(f"https://{host}/storemng/api/resources",
170-
headers={"X-Auth": fs_user_token}, verify=verify)
172+
headers={"X-Auth": fs_user_token}, verify=verify, timeout=FS_API_TIMEOUT)
171173
r_filesdel.raise_for_status()
172174
except (requests.exceptions.ConnectionError, requests.exceptions.HTTPError) as err:
173175
print("{0}: ".format(err))
174176
return False
175177
# delete user from filestore db
176178
try:
177179
r_userdel = requests.delete(f"https://{host}/storemng/api/users/{del_user['id']}",
178-
headers={"X-Auth": fs_user_token}, verify=verify)
180+
headers={"X-Auth": fs_user_token}, verify=verify, timeout=FS_API_TIMEOUT)
179181
r_userdel.raise_for_status()
180182
except (requests.exceptions.ConnectionError, requests.exceptions.HTTPError) as err:
181183
print("{0}: ".format(err))

users/persistence.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
from .utils import get_rest_host
88

9+
PERSIST_TIMEOUT = 30 # 30 seconds
10+
911

1012
def delete_scene_objects(scene, token):
1113
# delete scene from persist
@@ -44,11 +46,11 @@ def _urlopen(url, token, method, verify):
4446
try:
4547
if method == "GET":
4648
response = requests.get(
47-
url, headers=headers, cookies=cookies, verify=verify
49+
url, headers=headers, cookies=cookies, verify=verify, timeout=PERSIST_TIMEOUT
4850
)
4951
elif method == "DELETE":
5052
response = requests.delete(
51-
url, headers=headers, cookies=cookies, verify=verify
53+
url, headers=headers, cookies=cookies, verify=verify, timeout=PERSIST_TIMEOUT
5254
)
5355
return response.text
5456
except (requests.exceptions.ConnectionError, HTTPError) as err:

0 commit comments

Comments
 (0)