Skip to content

Commit 0e5af81

Browse files
committed
Added check for ratelimit headers for GHE compatibility. #issue-984
1 parent a168d06 commit 0e5af81

File tree

1 file changed

+25
-22
lines changed

1 file changed

+25
-22
lines changed

binderhub/repoproviders.py

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -527,6 +527,7 @@ def github_api_request(self, api_url, etag=None):
527527
elif (
528528
e.code == 403
529529
and e.response
530+
and 'x-ratelimit-remaining' in e.response.headers
530531
and e.response.headers.get('x-ratelimit-remaining') == '0'
531532
):
532533
rate_limit = e.response.headers['x-ratelimit-limit']
@@ -551,28 +552,30 @@ def github_api_request(self, api_url, etag=None):
551552
else:
552553
raise
553554

554-
# record and log github rate limit
555-
remaining = int(resp.headers['x-ratelimit-remaining'])
556-
rate_limit = int(resp.headers['x-ratelimit-limit'])
557-
reset_timestamp = int(resp.headers['x-ratelimit-reset'])
558-
559-
# record with prometheus
560-
GITHUB_RATE_LIMIT.set(remaining)
561-
562-
# log at different levels, depending on remaining fraction
563-
fraction = remaining / rate_limit
564-
if fraction < 0.2:
565-
log = self.log.warning
566-
elif fraction < 0.5:
567-
log = self.log.info
568-
else:
569-
log = self.log.debug
570-
571-
# str(timedelta) looks like '00:32'
572-
delta = timedelta(seconds=int(reset_timestamp - time.time()))
573-
log("GitHub rate limit remaining {remaining}/{limit}. Reset in {delta}.".format(
574-
remaining=remaining, limit=rate_limit, delta=delta,
575-
))
555+
if 'x-ratelimit-remaining' in resp.headers:
556+
# record and log github rate limit
557+
remaining = int(resp.headers['x-ratelimit-remaining'])
558+
rate_limit = int(resp.headers['x-ratelimit-limit'])
559+
reset_timestamp = int(resp.headers['x-ratelimit-reset'])
560+
561+
# record with prometheus
562+
GITHUB_RATE_LIMIT.set(remaining)
563+
564+
# log at different levels, depending on remaining fraction
565+
fraction = remaining / rate_limit
566+
if fraction < 0.2:
567+
log = self.log.warning
568+
elif fraction < 0.5:
569+
log = self.log.info
570+
else:
571+
log = self.log.debug
572+
573+
# str(timedelta) looks like '00:32'
574+
delta = timedelta(seconds=int(reset_timestamp - time.time()))
575+
log("GitHub rate limit remaining {remaining}/{limit}. Reset in {delta}.".format(
576+
remaining=remaining, limit=rate_limit, delta=delta,
577+
))
578+
576579
return resp
577580

578581
@gen.coroutine

0 commit comments

Comments
 (0)