Existe-t-il un moyen d’augmenter la limite du taux d’API ou de l’éviter complètement pour GitHub?
Je développe une application web qui a besoin d'envoyer beaucoup de requêtes HTTP vers GitHub. Après n nombre de requêtes réussies, je reçois HTTP 403: Forbidden
avec le message API Rate Limit Exceeded
.
Est-il un moyen d'augmenter l'API limite de débit ou de le contourner complètement pour GitHub?
source d'informationauteur Vivek Kodira
Vous devez vous connecter pour publier un commentaire.
C'est une solution relative, parce que la limite est toujours de 5000 appels d'API par minute,
ou ~70 appels par seconde, ce qui n'est vraiment pas beaucoup.
Je suis en train d'écrire un outil pour comparer plus de 350 dépôts dans une organisation et
pour trouver leurs corrélations.
Ok, l'outil utilise python pour git/github accès, mais je pense que
ce n'est pas le point important, ici.
Après quelques succès initiaux, j'ai découvert que les fonctionnalités de l'API GitHub
sont trop limitées dans le # d'appels et aussi de la bande passante, si vous voulez vraiment poser
le repos de profondes questions.
Donc, j'ai changé le concept, en utilisant une approche différente:
Au lieu de tout faire avec l'API GitHub, j'ai écrit un GitHub Miroir script
qui est capable de miroir tous ceux repos en moins de 15 minutes à l'aide de mon
en parallèle script python via pygit2.
Ensuite, j'ai écrit tout ce qui est possible en utilisant les espaces de stockage locaux et pygit2.
Cette solution est devenue plus rapide par un facteur de 100 ou plus, car il n'y a pas une API ni une largeur de bande de goulot de bouteille.
Bien sûr, ce n'coût supplémentaire effort, parce que le pygit2 API est tout à fait un peu
différent de github3.py j'ai préféré pour le GitHub de la solution de la partie.
Et qui est en fait ma conclusion/conseils:
Le moyen le plus efficace de travailler avec beaucoup de Git données est:
cloner toutes les pensions de titres qui vous intéressent, localement
écrire tout ce qui est possible à l'aide de pygit2, localement
écrire d'autres choses, comme public/privé info, pull requests, l'accès à l'
les pages du wiki, etc. à l'aide de la github3.py API ou ce que vous préférez.
De cette façon, vous pouvez maximiser votre rendement, tandis que votre limite est maintenant le
la qualité de votre programme. (non trivial)
Solution: Ajouter les informations d'authentification ou l'identification du client et de secret (généré lorsque vous enregistrer votre demande sur GitHub).
Trouvé détails ici et ici
"Si vous avez besoin de faire les appels non authentifiés mais vous devez utiliser un taux plus élevé limite associée à votre OAuth application, vous pouvez envoyer votre IDENTIFIANT client et de secret dans la chaîne de requête"
Afin d'augmenter l'API taux limite vous pourriez
vous authentifier sur Github via votre OAuth2 jeton ou
utiliser une clé/un secret pour augmenter le taux de non authentifié limite.
Il y a plusieurs façons de le faire:
Basic Auth + OAuth2Token
curl -u <token>:x-oauth-basic https://api.github.com/user
Définir et Envoyer OAuth2Token dans l'en-Tête
curl -H "Authorization: token OAUTH-TOKEN" https://api.github.com
Définir et Envoyer OAuth2Token comme Paramètre de l'URL
curl https://api.github.com/?access_token=OAUTH-TOKEN
Touche Set & Secret pour Serveur-2-Serveur de communication
curl 'https://api.github.com/users/whatever?client_id=xxxx&client_secret=yyyy'
Simplement faire de nouvelles "Personnels Jeton d'Accès" ici et l'utilisation simple de la méthode fetch (si vous êtes le codage en JS, bien sûr :D) et remplacer YOUR_ACCESS_TOKEN avec votre jeton.
La meilleure façon de tester, il est à utiliser Postman