Writeup of the DjangoCon Europe 2019 talk »Fetching data from APIs (GitHub) using Django and GraphQl without hitting the rate limits« by Manaswini Das
Manaswini Das: Outreachy round 16 intern (2018), Undergraduate, Open source contributor, Django lover, GitHub: @manaswinidas
The GitHub API is pretty good and organised already, though you will run into rate limits. Rate limits increase security and ensure a better flow of data, but as a user they can naturally be annoying, and you'll have to keep them in mind when using any API. The amount of data can also become problematic, and you'll have to be careful to get data only once.
Using celery for task management and requests-respectful, which is a wrapper for requests to work within arbitrary rate limits with any amount of services simultaneously.
GraphQL is a query language by Facebook to fetch and mutate data sources, which avoids versioning, allows you to limit the data you require, and receiving what could have taking multiple requests in a single response.
Most larger APIs use OAuth by now, which allows you to authenticate with other services. It allows for granular access grants via a token system.