DM-48390: Implement API rate limiting #1210
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Add enforcement of API rate limits if the user has an API quota for the service set in the
GafaelfawrIngress
. If the request is rejected by rate limiting, Gafaelfawr will return a 429 error with the HTTPRetry-After
header set to the time at which the rate limit resets.Rate limiting is implemented using the
limits
Python package, which unfortunately introduces a second Redis client with a separate pool (coredis
). Currently, rate limiting uses a fixed window without any fancy rolling expiration or burst protection.See SQR-073 for details about this design.