Есть ли способ увеличить ограничение скорости API или полностью обойти его для GitHub?
Я разрабатываю веб-приложение, которое должно отправлять много HTTP-запросов на GitHub. После n количество успешных запросов, я получаю HTTP 403: Forbidden
с .
есть ли способ увеличить ограничение скорости API или полностью обойти его для GitHub?
4 ответов
это относительное решение, потому что предел все еще 5000 вызовов API в минуту, или ~70 звонков в секунду, что на самом деле не так много.
Я пишу инструмент для сравнения более 350 хранилищ в организации и найти их корреляции. Хорошо, инструмент использует python для доступа git/github, но я думаю здесь это не имеет значения.
после некоторого первоначального успеха я узнал, что возможности API GitHub слишком ограничены в # вызовов и также в пропускной способности, если вы действительно хотите задать в репо много глубоких вопросов.
поэтому я переключил концепцию, используя другой подход:
вместо того, чтобы делать все с API GitHub, я написал зеркальный скрипт GitHub это может отразить все эти РЕПО менее чем за 15 минут, используя мой параллельный скрипт python через pygit2.
затем я написал все возможное, используя локальные репозитории и pygit2. Это решение стало быстрее коэффициент 100 или более, потому что не было ни API, ни горлышка бутылки с пропускной способностью.
конечно, это стоило дополнительных усилий, потому что API pygit2 довольно немного отличающийся от github3.py что я предпочел для части решения GitHub.
и это на самом деле мой вывод/совет: Самый эффективный способ работы с большим количеством данных Git:
клонировать все репо, которые вас интересуют, локально
пишите все возможное с помощью pygit2, локально
напишите другие вещи, как публичная / частная информация, запросы тяги, доступ к вики-страницы, проблемы и т. д. использование github3.py API или то, что вы предпочитаете.
таким образом, вы можете максимизировать пропускную способность, в то время как ваше ограничение сейчас качество вашей программы. (также нетривиально)
решение: добавьте данные аутентификации или идентификатор клиента и секрет (генерируется, когда вы зарегистрировать приложение на GitHub).
"Если вам нужно сделать неавторизованные вызовы, но нужно использовать более высокий предел скорости, связанный с вашим приложением OAuth, вы можете отправить свой идентификатор клиента и секрет в строке запроса"
для того, чтобы увеличить ограничение скорости API вы могли бы
аутентифицируйте себя в Github через токен OAuth2 или
используйте ключ / секрет для увеличить предел скорости проверки подлинности.
есть несколько способов сделать это:
curl -u <token>:x-oauth-basic https://api.github.com/user
установить и отправить OAuth2Token в заголовке
curl -H "Authorization: token OAUTH-TOKEN" https://api.github.com
установить и отправить OAuth2Token в качестве параметра URL
curl https://api.github.com/?access_token=OAUTH-TOKEN
установить ключ и секрет для сервера-2-серверная связь
curl 'https://api.github.com/users/whatever?client_id=xxxx&client_secret=yyyy'
просто сделайте новый "личный токен доступа"здесь и используйте простой метод выборки (если вы кодируете в JS, конечно :D) и замените YOUR_ACCESS_TOKEN своим токеном.
лучший способ проверить это, чтобы использовать почтальон
async function fetchGH() {
const response = await fetch('https://api.github.com/repos/facebook/react/issues', {
headers: {
'Authorization': 'token YOUR_ACCESS_TOKEN',
}
})
return await response.json()
}