Skip to content

Instantly share code, notes, and snippets.

@LochanBandi
LochanBandi / gist:df48b76883cc51ee5261beb07cbafb9a
Created November 21, 2025 16:47
Sliding Window Algorithm
class SlidingWindow:
def __init__(self, window_size, max_requests):
self.window_size = window_size
self.max_requests = max_requests
self.requests = deque()
def allow_request(self):
now = time.time()
while self.requests and self.requests[0] <= now - self.window_size:
self.requests.popleft()
class FixedWindow:
def __init__(self, window_size, max_requests):
self.window_size = window_size
self.max_requests = max_requests
self.requests = 0
self.window_start = time.time()
def allow_request(self):
now = time.time()
if now - self.window_start >= self.window_size:
class LeakyBucket:
def __init__(self, capacity, leak_rate):
self.capacity = capacity # Maximum capacity of the bucket
self.leak_rate = leak_rate # Rate at which the bucket leaks (units per second)
self.bucket_size = 0 # Current size of the bucket
self.last_updated = time.time() # Last time the bucket was updated
def add_data(self, data_size):
# Calculate time elapsed since last update
current_time = time.time()
class TokenBucket:
def __init__(self, rate, capacity):
self.rate = rate
self.capacity = capacity
self.tokens = capacity
self.last_refill = time.time()
def allow_request(self):
now = time.time();
self.tokens += (now - self.last_refill) * self.rate