← Lesson
Swarms of Cheap Workers
Joeven
Run
Reset
Python loads on first run
tickets = [ "server on fire in prod", "where is my invoice?", "typo on the about page", "refund never arrived", "API 500 on /v1/jobs", ] def worker(text): t = text.lower() if any(w in t for w in ("fire", "500", "prod")): sev = 3 elif any(w in t for w in ("refund", "invoice")): sev = 2 else: sev = 1 return {"text": text, "sev": sev} def reduce(rows): rows = sorted(rows, key=lambda r: (-r["sev"], r["text"])) buckets = {3: [], 2: [], 1: []} for r in rows: buckets[r["sev"]].append(r["text"]) return { "top": rows[0], "counts": {k: len(v) for k, v in buckets.items()}, "page": rows[:3], } mapped = [worker(t) for t in tickets] print("MAP") for row in mapped: print(" ", row) print("REDUCE", reduce(mapped))
Run to execute this in your browser. Nothing is sent to a server.