debugging web ui
This commit is contained in:
@ -32,4 +32,66 @@ class RateLimiter:
|
||||
|
||||
# Add current request
|
||||
self.requests[client_id].append(now)
|
||||
return True
|
||||
return True
|
||||
|
||||
def get_client_stats(self, client_id: str) -> Dict:
|
||||
"""Get rate limiting stats for a specific client"""
|
||||
now = time.time()
|
||||
minute_ago = now - 60
|
||||
|
||||
# Clean old requests
|
||||
self.requests[client_id] = [
|
||||
req_time for req_time in self.requests[client_id]
|
||||
if req_time > minute_ago
|
||||
]
|
||||
|
||||
current_requests = len(self.requests[client_id])
|
||||
remaining_tokens = max(0, self.requests_per_minute - current_requests)
|
||||
|
||||
# Calculate reset time (next minute boundary)
|
||||
reset_time = int(now) + (60 - int(now) % 60)
|
||||
|
||||
return {
|
||||
'client_id': client_id,
|
||||
'current_requests': current_requests,
|
||||
'remaining_tokens': remaining_tokens,
|
||||
'requests_per_minute': self.requests_per_minute,
|
||||
'reset_time': reset_time,
|
||||
'window_start': minute_ago,
|
||||
'window_end': now
|
||||
}
|
||||
|
||||
def get_global_stats(self) -> Dict:
|
||||
"""Get global rate limiting statistics"""
|
||||
now = time.time()
|
||||
minute_ago = now - 60
|
||||
|
||||
total_clients = len(self.requests)
|
||||
total_requests = 0
|
||||
active_clients = 0
|
||||
|
||||
for client_id in list(self.requests.keys()):
|
||||
# Clean old requests
|
||||
self.requests[client_id] = [
|
||||
req_time for req_time in self.requests[client_id]
|
||||
if req_time > minute_ago
|
||||
]
|
||||
|
||||
client_requests = len(self.requests[client_id])
|
||||
total_requests += client_requests
|
||||
|
||||
if client_requests > 0:
|
||||
active_clients += 1
|
||||
|
||||
# Remove clients with no recent requests
|
||||
if client_requests == 0:
|
||||
del self.requests[client_id]
|
||||
|
||||
return {
|
||||
'total_clients': total_clients,
|
||||
'active_clients': active_clients,
|
||||
'total_requests_last_minute': total_requests,
|
||||
'requests_per_minute_limit': self.requests_per_minute,
|
||||
'burst_size': self.burst_size,
|
||||
'window_duration': 60
|
||||
}
|
Reference in New Issue
Block a user