reject invalid token bucket limits - #19
Conversation
Reviewer's guide (collapsed on small PRs)Reviewer's GuideThis PR hardens the rate limiting middleware by validating token bucket configuration at initialization, rejecting non-positive request rates and burst capacities with clear ValueError messages before delegating to the base middleware setup. Flow diagram for rate_limit middleware initialization validationflowchart TD
A["RateLimitMiddleware.__init__(app, requests_per_minute, burst_capacity)"] --> B{"requests_per_minute < 1"}
B -- Yes --> C["raise ValueError requests_per_minute must be at least 1"]
B -- No --> D{"burst_capacity < 1"}
D -- Yes --> E["raise ValueError burst_capacity must be at least 1"]
D -- No --> F["super().__init__(app)"]
F --> G["set self.requests_per_minute"]
G --> H["set self.burst_capacity"]
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthrough
ChangesRate limit controls
Estimated code review effort: 3 (Moderate) | ~20 minutes Sequence Diagram(s)sequenceDiagram
participant Client
participant RateLimitMiddleware
participant StateLock
participant TokenBucket
participant Downstream
Client->>RateLimitMiddleware: send concurrent requests
RateLimitMiddleware->>StateLock: serialize bucket access
StateLock->>TokenBucket: consume token
TokenBucket-->>RateLimitMiddleware: allow or reject
RateLimitMiddleware->>Downstream: forward allowed request
RateLimitMiddleware-->>Client: response or HTTP 429
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
A zero or negative request rate creates a bucket that can never refill, while a non-positive burst capacity creates an unusable token bucket. Both values are now rejected when middleware starts, with clear ValueError messages. Verification: Python compilation and direct constructor assertions.
Summary by Sourcery
Bug Fixes:
Summary by CodeRabbit