Skip to content

Commit

Permalink
Add SleepyClient to tests to get past API quota
Browse files Browse the repository at this point in the history
  • Loading branch information
burnash committed Apr 28, 2020
1 parent d97b68c commit dbdf85a
Showing 1 changed file with 23 additions and 1 deletion.
24 changes: 23 additions & 1 deletion tests/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,28 @@ def get_method_name(self_id):
return self_id.split('.')[-1]


class SleepyClient(gspread.Client):
HTTP_TOO_MANY_REQUESTS = 429
DEFAULT_SLEEP_SECONDS = 1

def request(
self,
*args,
**kwargs
):
try:
return super().request(*args, **kwargs)
except APIError as err:
data = err.response.json()

if data['error']['code'] == self.HTTP_TOO_MANY_REQUESTS:
import time
time.sleep(self.DEFAULT_SLEEP_SECONDS)
return self.request(*args, **kwargs)
else:
raise err


class DummyCredentials(UserCredentials):
pass

Expand Down Expand Up @@ -107,7 +129,7 @@ def tearDownClass(cls):
def setUp(self):
super(BetamaxGspreadTest, self).setUp()
self.session.headers.update({'accept-encoding': 'identity'})
self.gc = gspread.Client(self.auth_credentials, session=self.session)
self.gc = SleepyClient(self.auth_credentials, session=self.session)

self.session.headers.update({
'Authorization': 'Bearer %s' % self.auth_credentials.token
Expand Down

0 comments on commit dbdf85a

Please sign in to comment.