Skip to content

Commit 8a6a190

Browse files
authored
Merge pull request #19 from JupiterOne/KNO-428
add retry logic for API requests
2 parents d49d21c + 53aebce commit 8a6a190

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

jupiterone/client.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from typing import Dict, List
88

99
import requests
10+
from requests.adapters import HTTPAdapter, Retry
1011
from retrying import retry
1112

1213
from jupiterone.errors import (
@@ -94,7 +95,12 @@ def _execute_query(self, query: str, variables: Dict = None) -> Dict:
9495
# Always ask for variableResultSize
9596
data.update(flags={"variableResultSize": True})
9697

97-
response = requests.post(
98+
# initiate requests session and implement retry logic of 5 request retries with 1 second between
99+
s = requests.Session()
100+
retries = Retry(total=5, backoff_factor=1, status_forcelist=[429, 502, 503, 504])
101+
s.mount('https://', HTTPAdapter(max_retries=retries))
102+
103+
response = s.post(
98104
self.query_endpoint, headers=self.headers, json=data, timeout=60
99105
)
100106

0 commit comments

Comments
 (0)