import time import logging from datetime import datetime from datetime import timedelta from datetime import timezone from github import Github def sleep_after_rate_limit_exception(github_client: Github) -> None: """ Sleep until the GitHub rate limit resets. Args: github_client: The GitHub client that hit the rate limit """ sleep_time = github_client.get_rate_limit().core.reset.replace( tzinfo=timezone.utc ) - datetime.now(tz=timezone.utc) sleep_time += timedelta(minutes=1) # add an extra minute just to be safe logging.info( "Ran into Github rate-limit. Sleeping %s seconds.", sleep_time.seconds ) time.sleep(sleep_time.total_seconds())