Есть ли способ увеличить лимит скорости API или полностью обходить его для GitHub?
Я разрабатываю веб-приложение, которое должно отправлять много HTTP-запросов в GitHub. После n числа успешных запросов я получаю HTTP 403: Forbidden
с сообщением API Rate Limit Exceeded
.
Есть ли способ увеличить ограничение скорости API или полностью обходить его для GitHub?
Ответы
Ответ 1
Это относительное решение, поскольку предел по-прежнему составляет 5000 вызовов API за минуту,
или ~ 70 вызовов в секунду, что действительно не так много.
Я пишу инструмент для сравнения более 350 репозиториев в организации и
найти их корреляции.
Хорошо, инструмент использует python для доступа git/github, но я думаю
здесь не обязательно.
После некоторого начального успеха я узнал, что возможности API GitHub
слишком ограничены в # вызовах, а также в полосе пропускания, если вы действительно хотите спросить
в репозиториях много глубоких вопросов.
Поэтому я переключил концепцию, используя другой подход:
Вместо того, чтобы делать все с помощью API GitHub, я написал GitHub Mirror script
который способен отражать все эти репозитории менее чем за 15 минут, используя мои
параллельный python script через pygit2.
Затем я написал все возможное, используя локальные репозитории и pygit2.
Это решение стало быстрее в 100 раз или более, потому что не было ни API, ни шейки полости пропускания.
Конечно, это стоило дополнительных усилий, потому что pygit2 API довольно немного
отличается от github3.py, который я предпочитал для части решения GitHub.
И это на самом деле мой вывод/совет:
Наиболее эффективным способом работы с большим количеством данных Git является:
-
клонировать все интересующие вас репозиции, локально
-
пишите все, используя pygit2, локально
-
пишите другие вещи, такие как общедоступная/частная информация, запросы на загрузку, доступ к
wiki-страницы, проблемы и т.д., используя API github3.py или то, что вы предпочитаете.
Таким образом, вы можете максимизировать свою пропускную способность, в то время как ваши ограничения теперь
качество вашей программы. (также нетривиальный)
Ответ 2
Решение. Добавьте данные проверки подлинности или идентификатор клиента и секрет (сгенерированный при зарегистрируйте приложение на GitHub).
Найденные детали здесь и здесь
"Если вам необходимо выполнить неавторизованные вызовы, но вам необходимо использовать более высокий лимит скорости, связанный с вашим приложением OAuth, вы можете отправить свой идентификатор клиента и секрет в строку запроса"
Ответ 3
Чтобы увеличить ограничение скорости API, вы можете
Существует несколько способов сделать это:
Basic Auth + OAuth2Token
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
Установить ключ и секрет для связи Server-2-Server
curl 'https://api.github.com/users/whatever?client_id=xxxx&client_secret=yyyy'
Ответ 4
Просто создайте новый "токен личного доступа" здесь и используйте простой метод выборки (если вы, конечно, кодируете в JS: D) и замените YOUR_ACCESS_TOKEN своим токеном.
Лучший способ проверить это - использовать Postman
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()
}
Ответ 5
Я наблюдал эту ошибку при конфигурировании мультибренажных трубопроводов у дженкинсов
Я выбрал источник как github. После изменения его в git и передачи данных guthub repo он работал. (имеет исполняемый путь git, сконфигурированный в jenkins и имеющий учетные данные, установленные для аутентификации в github)