hardSystem Design

What is the circuit breaker pattern?

331 views
01

Understand the problem

Explain circuit breakers.

circuit-breaker
02

Attempt it yourself

Sketch your approach before reading the solution — that's what interviews test.

Stuck? AI Nudge Available

Get a conceptual hint to guide your logic without spoiling the final implementation.

03

Study the solution

The solution is waiting

Give it an honest attempt first — then compare your thinking with the full walkthrough.

04

Read the code

Circuit breaker
Run Playground
import time

class CircuitBreaker:
    def __init__(self, threshold=3, cooldown=5):
        self.threshold = threshold
        self.cooldown = cooldown
        self.failures = 0
        self.state = "CLOSED"
        self.opened_at = 0

    def call(self, fn):
        if self.state == "OPEN":
            if time.time() - self.opened_at >= self.cooldown:
                self.state = "HALF_OPEN"           # time to probe
            else:
                raise Exception("circuit OPEN - failing fast")
        try:
            result = fn()
        except Exception:
            self.failures += 1
            if self.failures >= self.threshold:
                self.state = "OPEN"
                self.opened_at = time.time()
            raise
        self.failures = 0                          # success resets
        self.state = "CLOSED"
        return result

cb = CircuitBreaker(threshold=2, cooldown=5)
def flaky():
    raise Exception("downstream down")

for i in range(4):
    try:
        cb.call(flaky)
    except Exception as e:
        print(i, cb.state, "-", e)
05

Join the discussion

Discussion (0)

Sign in to join the discussion.

No responses yet. Be the first to share what you think.