Skip to content

Commit b133fff

Browse files
authored
Update oauth to use a delay instead of timestamp
* Update oauth test * Pulling in changes and fixing test
1 parent e045297 commit b133fff

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

segment/analytics/oauth_manager.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,13 +152,13 @@ def _poller_loop(self):
152152

153153
elif response.status_code == 429:
154154
self.retry_count += 1
155-
rate_limit_reset_timestamp = None
155+
rate_limit_reset_time = None
156156
try:
157-
rate_limit_reset_timestamp = int(response.headers.get("X-RateLimit-Reset"))
157+
rate_limit_reset_time = int(response.headers.get("X-RateLimit-Reset"))
158158
except Exception as e:
159159
self.log.error("OAuth rate limit response did not have a valid rest time: {} | {}".format(response, e))
160-
if rate_limit_reset_timestamp:
161-
refresh_timer_ms = rate_limit_reset_timestamp - time.time() * 1000
160+
if rate_limit_reset_time:
161+
refresh_timer_ms = rate_limit_reset_time * 1000
162162
else:
163163
refresh_timer_ms = 5 * 1000
164164

segment/analytics/test/test_oauth.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ def json(self):
5555
elif kwargs['url'] == 'http://127.0.0.1:400/token':
5656
return MockResponse({"reason": "test_reason", "json_data" : {"error":"unrecoverable", "error_description":"nah"}}, 400)
5757
elif kwargs['url'] == 'http://127.0.0.1:429/token':
58-
return MockResponse({"reason": "test_reason", "headers" : {"X-RateLimit-Reset": time.time()*1000 + 2000}}, 429)
58+
return MockResponse({"reason": "test_reason", "headers" : {"X-RateLimit-Reset": 234}}, 429)
5959
elif kwargs['url'] == 'http://127.0.0.1:500/token':
6060
return MockResponse({"reason": "test_reason", "json_data" : {"error":"recoverable", "error_description":"nah"}}, 500)
6161
elif kwargs['url'] == 'http://127.0.0.1:501/token':
@@ -106,7 +106,7 @@ def test_oauth_fail_with_retries(self, mock_post):
106106
def test_oauth_rate_limit_delay(self, mock_sleep, mock_post):
107107
manager = segment.analytics.oauth_manager.OauthManager("id", privatekey, "keyid", "http://127.0.0.1:429")
108108
manager._poller_loop()
109-
self.assertTrue(mock_sleep.call_args[0][0] > 1.9 and mock_sleep.call_args[0][0] <= 2.0)
109+
mock_sleep.assert_called_with(234)
110110

111111
class TestOauthIntegration(unittest.TestCase):
112112
def fail(self, e, batch=[]):
@@ -152,4 +152,4 @@ def test_oauth_integration_fail_bad_key(self, mock_post):
152152
self.assertTrue(self.failed)
153153

154154
if __name__ == '__main__':
155-
unittest.main()
155+
unittest.main()

0 commit comments

Comments
 (0)