Spaces:
Build error
Build error
| from collections import defaultdict | |
| from datetime import datetime, timedelta | |
| # Rate limiter class | |
| class RateLimiter: | |
| def __init__(self, max_requests=10, window_minutes=60): | |
| self.max_requests = max_requests | |
| self.window = timedelta(minutes=window_minutes) | |
| self.requests = defaultdict(list) | |
| def is_allowed(self, identifier): | |
| now = datetime.now() | |
| # Clean old requests | |
| self.requests[identifier] = [ | |
| req_time for req_time in self.requests[identifier] | |
| if now - req_time < self.window | |
| ] | |
| if len(self.requests[identifier]) < self.max_requests: | |
| self.requests[identifier].append(now) | |
| return True | |
| return False | |
| def get_remaining(self, identifier): | |
| now = datetime.now() | |
| self.requests[identifier] = [ | |
| req_time for req_time in self.requests[identifier] | |
| if now - req_time < self.window | |
| ] | |
| return self.max_requests - len(self.requests[identifier]) | |