Есть ли способ увеличить лимит скорости 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)