Spaces:
Build error
Build error
File size: 1,036 Bytes
6d64ea5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
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])
|