← Lesson
Canaries and Feature Flags
Joeven
Run
Reset
Python loads on first run
def route(job, flags): if flags.get("agents.disabled"): return {"sha": None, "reason": "killed"} volunteer = flags.get("canary_tenants") or [] if job["tenant"] in volunteer: return {"sha": flags["canary_sha"], "reason": "volunteer"} n = sum(ord(c) for c in job["id"]) % 100 if n < flags.get("canary_percent", 0): return {"sha": flags["canary_sha"], "reason": "percent"} return {"sha": flags["stable_sha"], "reason": "stable"} flags = { "canary_percent": 5, "canary_sha": "sha-new", "stable_sha": "sha-old", "canary_tenants": ["lab"], } print("acme", route({"id": "job_17", "tenant": "acme"}, flags)) print("lab", route({"id": "job_17", "tenant": "lab"}, flags)) print("bucket d", route({"id": "d", "tenant": "acme"}, flags))
Run to execute this in your browser. Nothing is sent to a server.