conda-forge.github.io: GitHub API rate limit exceeded for conda-forge-admin

Impressive!

https://travis-ci.org/conda-forge/conda-forge.github.io/jobs/122659551

Running command: ['python', '/home/travis/build/conda-forge/conda-forge.github.io/scripts/update_teams.py', './feedstocks_repo/feedstocks']
Traceback (most recent call last):
  File "/home/travis/build/conda-forge/conda-forge.github.io/scripts/update_teams.py", line 105, in <module>
    team._requester.requestJsonAndCheck("PUT", url, input={"permission": "push"})
  File "/home/travis/conda/tmp_envs/0a2f51c4c88b9dcaf16e/lib/python3.5/site-packages/github/Requester.py", line 171, in requestJsonAndCheck
    return self.__check(*self.requestJson(verb, url, parameters, headers, input, cnx))
  File "/home/travis/conda/tmp_envs/0a2f51c4c88b9dcaf16e/lib/python3.5/site-packages/github/Requester.py", line 179, in __check
    raise self.__createException(status, responseHeaders, output)
github.GithubException.GithubException: 403 {'documentation_url': 'https://developer.github.com/v3/#rate-limiting', 'message': 'API rate limit exceeded for conda-forge-admin.'}
CalledProcessError: Command '['python', '/home/travis/build/conda-forge/conda-forge.github.io/scripts/update_teams.py', './feedstocks_repo/feedstocks']' returned non-zero exit status 1

Looks like that is over 5000 requests an hour! https://developer.github.com/v3/#rate-limiting

Might be that the teams script needs to be a little smarter… 😄

About this issue

  • Original URL
  • State: closed
  • Created 8 years ago
  • Comments: 44 (43 by maintainers)

Most upvoted comments

Basically we have done quite a bit in the last few months to address this. Going to close it out for now. We can revisit options as they become necessary again.

Though I should add all of @ericdill’s changes looked sensible to me. I’m sure we could tweak things more, but don’t want to enter the bikesheding domain with this.

I’m writing something to them now, but I would appreciate some feedback. I’ll put it in a Google Doc and link it here so you guys can take a look and see if there is anything you want to add or if I messed something up.

OK. Given we need to checkout the feedstock in order to get the list of names, we can check how old the last commit was on the repo to determine whether the team needs updating. We can then periodically (daily, weekly or even monthly) run the full process to determine who needs to be removed, or if there are any stragglers which missed the cut.

Ouch! So, recounting the same users in various ways.

The linter makes 3 requests per check. I don’t have numbers on how many checks it does an hour, but I’ve added a new @conda-forge-linter user who does all of our linting for us 😄

That is probably only a sticking plaster though - I suspect the feedstock team management is causing a good number of these rate limit issues.