mirror of
https://git.juggalol.com/agatha/gitmon.git
synced 2024-11-22 15:36:43 +00:00
Sleep until rate limit refresh
This commit is contained in:
parent
9387706f61
commit
2e2756db07
@ -1,6 +1,8 @@
|
||||
"""GitHub API module"""
|
||||
import logging
|
||||
import requests
|
||||
from datetime import datetime
|
||||
from time import sleep
|
||||
from requests.adapters import HTTPAdapter
|
||||
from requests.packages.urllib3.util.retry import Retry
|
||||
|
||||
@ -26,6 +28,12 @@ class GitHubApi:
|
||||
"""GET an HTTP resource and return JSON."""
|
||||
url = self.base_url + endpoint
|
||||
|
||||
# Check rate limits
|
||||
if self.rate_remaining == 0 and self.rate_reset > datetime.now():
|
||||
logging.warning(f'Out of API calls. Sleeping until {self.rate_reset}.')
|
||||
delta = self.rate_reset - datetime.now()
|
||||
sleep(delta.total_seconds())
|
||||
|
||||
try:
|
||||
response = self.session.get(url, params=params)
|
||||
except requests.RequestException as e:
|
||||
@ -41,7 +49,7 @@ class GitHubApi:
|
||||
|
||||
def __parse_headers(self, headers):
|
||||
"""Parse headers to update rate limits."""
|
||||
self.rate_reset = int(headers['x-ratelimit-reset'])
|
||||
self.rate_reset = datetime.fromtimestamp(int(headers['x-ratelimit-reset']))
|
||||
self.rate_remaining = int(headers['x-ratelimit-remaining'])
|
||||
|
||||
def get_events(self, page=None):
|
||||
|
Loading…
Reference in New Issue
Block a user