Recibo el error Github APi 403 cuando no he excedido mi límite de velocidad

Estoy sacando datos de Github a través de PyGithub. Mi problema es que recibo este error durante mi raspado:

github.GithubException.GithubException: 403 {'documentation_url': ' https://developer.github.com/v3/#rate-limiting ', 'message': 'Límite de tasa de API excedido para XXXXX.'}

Al curvar la API recibo:

curl -i https://api.github.com/users/XXXXXX HTTP/1.1 200 OK Server: GitHub.com Date: Thu, 14 Jul 2016 15:03:51 GMT Content-Type: application/json; charset=utf-8 Content-Length: 1301 Status: 200 OK X-RateLimit-Limit: 60 X-RateLimit-Remaining: 52 X-RateLimit-Reset: 1468509718 Cache-Control: public, max-age=60, s-maxage=60 Vary: Accept Last-Modified: Wed, 08 Jun 2016 13:29:08 GMT 

tenga en count las tags de Ratelimit:

 X-RateLimit-Limit: 60 X-RateLimit-Remaining: 52 X-RateLimit-Reset: 1468509718 

Si ejecuto mi progtwig Python nuevamente obtendré otro post de límite de velocidad de API excedido. Leí la documentation de la API para github y, por lo que puedo decir, todavía me quedan 52 requestes. Si puedo proporcionar más información para que esto sea mejor, házmelo saber. Gracias.

Editar: para aclarar, estoy usando cnetworkingenciales para iniciar session en github.

 ORGANIZATION = "ORG" PERSONAL_ACCESS_TOKEN = "TOKEN" g = Github(PERSONAL_ACCESS_TOKEN, per_page = 100) github_organization = g.get_organization(ORGANIZATION) 

He resuelto este problema con mi trabajo anterior … aquí está …

El estado HTTP 403 denota una request prohibida, por lo que ha proporcionado cnetworkingenciales que no le permiten acceder a algunos puntos finales.

Por lo tanto, es posible que deba proporcionar cnetworkingenciales válidas (nombre de usuario / contraseña) al crear el object Github:

 #!/usr/bin/env python3 from github import Github ACCESS_USERNAME = 'username' ACCESS_PWD = "password" client = Github(ACCESS_USERNAME, ACCESS_PWD, per_page=100) user = client.get_user('ELLIOTTCABLE') repo_list = [repo.name for repo in user.get_repos() if not repo.fork] print(repo_list) for j in repo_list: repo = user.get_repo(j) lang = repo.language print(j,':',lang) 

Espero que lo encuentres útil.

Así que el problema no estaba en mi límite de velocidad, sino en el post que devolvía el contenedor PyGithub. Remonté mi error y encontré esta class en el código fuente: https://github.com/PyGithub/PyGithub/blob/master/github/Requester.py

Al llegar a la function __createException noté esto:

 def __createException(self, status, headers, output): if status == 401 and output.get("message") == "Bad cnetworkingentials": cls = GithubException.BadCnetworkingentialsException elif status == 401 and 'x-github-otp' in headers and re.match(r'.*requinetworking.*', headers['x-github-otp']): cls = GithubException.TwoFactorException # pragma no cover (Should be covenetworking) elif status == 403 and output.get("message").startswith("Missing or invalid User Agent string"): cls = GithubException.BadUserAgentException elif status == 403 and output.get("message").startswith("API Rate Limit Exceeded"): cls = GithubException.RateLimitExceededException elif status == 404 and output.get("message") == "Not Found": cls = GithubException.UnknownObjectException else: cls = GithubException.GithubException return cls(status, output) 

Al mirar el post de la exception que recibí, asumí que era la exception RateLimitExceededException.

Sin embargo, al observar la exception propiamente dicha, noté que era la exception GithubException.GithubException la que parece ser una exception general si ninguna de las otras excepciones se activa.

Esto responde a mis preguntas porque no se trataba de un problema que superaba la tasa API porque aún me quedaban más requestes cuando recibía esta exception.

Desafortunadamente, es una exception no específica. Esto responde mi pregunta inicial por ahora.

Actualización: también estaba curvando la API sin un token, por lo que no me transmitía la información correcta. Con el token, muestra que utilicé todas mis requestes.