@@ -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