def _aggregate(args): filename, (hours, ) = args uid = filename + "~" +str(hours) if r.sismember(PROCESSED_KEY, uid): print "{} with {} hours already processed. Carrying on...".format(filename, hours) return gcc = CrashCounts("global", hours) ccs = {} for crash in crashes(filename): bucket = buckify(hours, crash.time) gcc.incr(bucket, 1) cc = ccs.get(crash.signature_id) if not cc: ccs[crash.signature_id] = cc = CrashCounts(crash.signature_id, hours) cc.incr(bucket, 1) for cc in ccs.itervalues(): cc.finalize() gcc.finalize() r.sadd(PROCESSED_KEY, uid)
def _top_crashes(args): filename, (start, end) = args pipe = r.pipeline() for crash in crashes(filename): pipe.hincrby(top_crashes_key(start, end), crash.signature_id, 1) pipe.execute()