ARCHIVED from builddistributedsystem.com on 2026-04-28 — URL: https://builddistributedsystem.com/tracks/proxies/tasks/task-21-2-5-quota-management
TASK

Implementation

Rate limiting tiers:. . Free tier:. - 100 requests/hour. - 1000 requests/day. - Return 429 when exceeded. Paid tier:. - 10,000 requests/hour. - 100,000 requests/day. - Auto-scale capacity. Enterprise tier:. - Custom limits. - Burstable capacity. - Priority routing. . Quota tracking:. typescript. api_key: string,. tier: string,. hourly_limit: number,. daily_limit: number,. hourly_used: number,. daily_used: number,. hourly_reset: timestamp,. daily_reset: timestamp. const quota = this.quotas.get(apiKey);. const now = Date.now();. // Reset counters if period expired. quota.daily_used = 0;. quota.daily_reset = startOfDay(now + 1 day);. quota.hourly_used = 0;. quota.hourly_reset = startOfHour(now + 1 hour);. // Check limits. // Increment counters. quota.hourly_used++;. quota.daily_used++;. . Example rate limiting:. json. // Free tier request (within quota):. // Free tier request (quota exceeded):. // Paid tier request (higher quota):.

Sample Test Cases

Enforce free tier quotaTimeout: 5000ms
Input
{"src":"client","dest":"gateway","body":{"type":"init","msg_id":1,"tiers":{"free":{"hourly_limit":100,"daily_limit":1000},"paid":{"hourly_limit":10000,"daily_limit":100000}}}}
{"src":"client","dest":"gateway","body":{"type":"api_request","msg_id":2,"method":"GET","path":"/api/data","headers":{"X-API-Key":"free_key_123"},"hourly_used":100}}
Expected Output
{"src": "gateway", "dest": "client", "body": {"type": "init_ok", "in_reply_to": 1}}
Rate limit headers includedTimeout: 5000ms
Input
{
  "src": "client",
  "dest": "gateway",
  "body": {
    "type": "api_request",
    "msg_id": 1,
    "method": "GET",
    "path": "/api/data",
    "headers": {
      "X-API-Key": "free_key_123"
    }
  }
}
Expected Output
{"src": "gateway", "dest": "client", "body": {"type": "api_response", "in_reply_to": 1, "status": 200, "headers": {"X-RateLimit-Limit": "100", "X-RateLimit-Remaining": .*, "X-RateLimit-Reset": .*}}}

Hints

Hint 1
Enforce per-API-key rate limits: free tier (100 req/hour), paid tier (10000 req/hour)
Hint 2
Track usage for billing: count requests per API key per billing period
Hint 3
Return rate limit headers: X-RateLimit-Remaining, X-RateLimit-Reset
Hint 4
Support quota override for enterprise clients
Hint 5
Distinguish between soft limits (throttle) and hard limits (block)
OVERVIEW

Theoretical Hub

Concept overview coming soon

Key Concepts

rate limitingquota managementAPI tiersthrottlingusage trackingbilling integration
main.py
python
Implement Rate Limiting and Quota Management - Proxies | Build Distributed Systems