Skip to content

Commit e430daa

Browse files
authored
Merge pull request #57 from cp2boston/RCB-482_remove_429_loop
Removed 429 loop
2 parents 015cae2 + bdf484d commit e430daa

File tree

2 files changed

+34
-61
lines changed

2 files changed

+34
-61
lines changed

rosette/api.py

Lines changed: 33 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -522,7 +522,6 @@ def __init__(
522522
if (refresh_duration < 0):
523523
refresh_duration = 0
524524

525-
self.num_retries = retries
526525
self.connection_refresh_duration = refresh_duration
527526
self.options = {}
528527
self.customHeaders = {}
@@ -538,8 +537,6 @@ def _set_pool_size(self):
538537

539538
def _make_request(self, op, url, data, headers):
540539
"""
541-
Handles the actual request, retrying if a 429 is encountered
542-
543540
@param op: POST or GET
544541
@param url: endpoing URL
545542
@param data: request data
@@ -556,43 +553,39 @@ def _make_request(self, op, url, data, headers):
556553
session = requests.Session()
557554
prepared_request = session.prepare_request(request)
558555

559-
for i in range(self.num_retries + 1):
560-
try:
561-
response = session.send(prepared_request)
562-
status = response.status_code
563-
rdata = response.content
564-
dict_headers = dict(response.headers)
565-
response_headers = {"responseHeaders": dict_headers}
566-
if 'x-rosetteapi-concurrency' in dict_headers:
567-
if dict_headers['x-rosetteapi-concurrency'] != self.maxPoolSize:
568-
self.maxPoolSize = dict_headers['x-rosetteapi-concurrency']
569-
self._set_pool_size()
570-
571-
if status == 200:
572-
return rdata, status, response_headers
573-
if status == 429:
574-
code = status
575-
message = "{0} ({1})".format(rdata, i)
576-
time.sleep(self.connection_refresh_duration)
577-
continue
578-
if rdata is not None:
579-
try:
580-
the_json = _my_loads(rdata, response_headers)
581-
if 'message' in the_json:
582-
message = the_json['message']
583-
if "code" in the_json:
584-
code = the_json['code']
585-
else:
586-
code = status
587-
raise RosetteException(code, message, url)
588-
589-
except:
590-
raise
591-
except requests.exceptions.RequestException as e:
592-
raise RosetteException(
593-
e.message,
594-
"Unable to establish connection to the Rosette API server",
595-
url)
556+
try:
557+
response = session.send(prepared_request)
558+
status = response.status_code
559+
rdata = response.content
560+
dict_headers = dict(response.headers)
561+
response_headers = {"responseHeaders": dict_headers}
562+
if 'x-rosetteapi-concurrency' in dict_headers:
563+
if dict_headers['x-rosetteapi-concurrency'] != self.maxPoolSize:
564+
self.maxPoolSize = dict_headers['x-rosetteapi-concurrency']
565+
self._set_pool_size()
566+
567+
if status == 200:
568+
return rdata, status, response_headers
569+
if rdata is not None:
570+
try:
571+
the_json = _my_loads(rdata, response_headers)
572+
if 'message' in the_json:
573+
message = the_json['message']
574+
if "code" in the_json:
575+
code = the_json['code']
576+
else:
577+
code = status
578+
if not message:
579+
message = rdata
580+
raise RosetteException(code, message, url)
581+
582+
except:
583+
raise
584+
except requests.exceptions.RequestException as e:
585+
raise RosetteException(
586+
e.message,
587+
"Unable to establish connection to the Rosette API server",
588+
url)
596589

597590
raise RosetteException(code, message, url)
598591

tests/test_rosette_api.py

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,6 @@ def api():
4747
return api
4848

4949

50-
@pytest.fixture
51-
def json_429(scope="module"):
52-
body = json.dumps({'message': 'too many requests', 'versionChecked': True})
53-
return body
54-
55-
5650
@pytest.fixture
5751
def json_409(scope="module"):
5852
body = json.dumps({'code': 'incompatibleClientVersion', 'message': 'the version of client library used is not compatible with this server', 'versionChecked': True})
@@ -140,22 +134,8 @@ def test_info(api, json_response):
140134
httpretty.disable()
141135
httpretty.reset()
142136

143-
# Test for 429
144-
145-
146-
def test_for_429(api, json_429):
147-
httpretty.enable()
148-
httpretty.register_uri(httpretty.GET, "https://api.rosette.com/rest/v1/info",
149-
body=json_429, status=429, content_type="application/json")
150-
151-
with pytest.raises(RosetteException) as e_rosette:
152-
result = api.info()
153-
154-
assert e_rosette.value.status == 429
155-
httpretty.disable()
156-
httpretty.reset()
157137

158-
# Test for 429
138+
# Test for 409
159139

160140

161141
def test_for_409(api, json_409):

0 commit comments

Comments
 (0)