limiter
limiter copied to clipboard
Limiter v4 Checklist
This is a checklist of refactoring, enhancements and/or features that I would like to take in the next major version of limiter:
-
Remove panic in
DefaultErrorHandler
: people may not have a recover middleware, and I would prefer that they overwrite the default behavior than relying on potential capture. - Reset precision: It seems some people use this library as a client-side limiter. The current reset mechanism is not great for burst because you could miss some tick if your rate period is in second. This is caused by an imprecise conversion from a TTL to a Unix timestamp.
- Change rate limit dynamically: Few peoples have asked how we can change/update the rate limit "on the fly". I think it's a great feature.
- Enable "client" mode: This limiter was designed for a server with HTTP. It's a shame that we can't use it properly as a "client" flavor.
-
Refactor
GetContextFromState
: We don't needtime.Time
for expiration and now is unused.
- Change rate limit dynamically
To extend this further, I would suggest having configurable limits based on endpoint level can also be provided, for e.g., if I've 10 endpoints, and I want to limit only 3 endpoints and all of them can have different limits. According to current implementations I possibly have to create a sub router or tweak the middleware implementation accordingly.