From b9f84d81942f36724ffec069052799d767ffd042 Mon Sep 17 00:00:00 2001 From: lightmaster Date: Thu, 30 Nov 2017 04:41:21 -0500 Subject: [PATCH] Change retry time to 5-10 minutes after the hour randomly picks a time between 5 and 10 minutes after the hour to retry, preventing any issues caused by a small difference between the computer's time and Fitbit's server's time. --- remote.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/remote.py b/remote.py index bb21d39..ad9a639 100644 --- a/remote.py +++ b/remote.py @@ -19,6 +19,7 @@ from oauth2client.client import OAuth2Credentials from googleapiclient.errors import HttpError +from random import randint from app import DATE_FORMAT class Remote: @@ -53,12 +54,14 @@ def ReadFromFitbit(self, api_call, *args, **kwargs): try: resp = api_call(*args,**kwargs) except HTTPTooManyRequests as e: + # retry between 5-10 minutes after the hour + seconds_till_retry = e.retry_after_secs + randint(300,600) print('') print('-------------------- Fitbit API rate limit reached -------------------') - retry_time = datetime.now()+timedelta(seconds=e.retry_after_secs) + retry_time = datetime.now()+timedelta(seconds=seconds_till_retry) print('Will retry at {}'.format(retry_time.strftime('%H:%M:%S'))) print('') - time.sleep(e.retry_after_secs) + time.sleep(seconds_till_retry) resp = self.ReadFromFitbit(api_call,*args,**kwargs) return resp