@@ -593,6 +593,7 @@ def github_api_request(self, api_url, etag=None):
593593 elif (
594594 e .code == 403
595595 and e .response
596+ and 'x-ratelimit-remaining' in e .response .headers
596597 and e .response .headers .get ('x-ratelimit-remaining' ) == '0'
597598 ):
598599 rate_limit = e .response .headers ['x-ratelimit-limit' ]
@@ -617,28 +618,30 @@ def github_api_request(self, api_url, etag=None):
617618 else :
618619 raise
619620
620- # record and log github rate limit
621- remaining = int (resp .headers ['x-ratelimit-remaining' ])
622- rate_limit = int (resp .headers ['x-ratelimit-limit' ])
623- reset_timestamp = int (resp .headers ['x-ratelimit-reset' ])
624-
625- # record with prometheus
626- GITHUB_RATE_LIMIT .set (remaining )
627-
628- # log at different levels, depending on remaining fraction
629- fraction = remaining / rate_limit
630- if fraction < 0.2 :
631- log = self .log .warning
632- elif fraction < 0.5 :
633- log = self .log .info
634- else :
635- log = self .log .debug
636-
637- # str(timedelta) looks like '00:32'
638- delta = timedelta (seconds = int (reset_timestamp - time .time ()))
639- log ("GitHub rate limit remaining {remaining}/{limit}. Reset in {delta}." .format (
640- remaining = remaining , limit = rate_limit , delta = delta ,
641- ))
621+ if 'x-ratelimit-remaining' in resp .headers :
622+ # record and log github rate limit
623+ remaining = int (resp .headers ['x-ratelimit-remaining' ])
624+ rate_limit = int (resp .headers ['x-ratelimit-limit' ])
625+ reset_timestamp = int (resp .headers ['x-ratelimit-reset' ])
626+
627+ # record with prometheus
628+ GITHUB_RATE_LIMIT .set (remaining )
629+
630+ # log at different levels, depending on remaining fraction
631+ fraction = remaining / rate_limit
632+ if fraction < 0.2 :
633+ log = self .log .warning
634+ elif fraction < 0.5 :
635+ log = self .log .info
636+ else :
637+ log = self .log .debug
638+
639+ # str(timedelta) looks like '00:32'
640+ delta = timedelta (seconds = int (reset_timestamp - time .time ()))
641+ log ("GitHub rate limit remaining {remaining}/{limit}. Reset in {delta}." .format (
642+ remaining = remaining , limit = rate_limit , delta = delta ,
643+ ))
644+
642645 return resp
643646
644647 @gen .coroutine
0 commit comments