def store_message(data): global t0, cnt raw_msg = data.split('\0', 2) del data now = datetime.datetime.utcnow() if len(raw_msg) == 2: action, sender = raw_msg[1].split(' ', 1) print "%s - %s -> %d" % (sender, action, cnt) if action == 'start': senders[sender] = (cnt, now) print 'started %s at %s' % (sender, now) elif action == 'stop': try: oldcnt, tstart = senders[sender] r = cnt - oldcnt t = timedelta2int(now - tstart) tr = float(t) / float(r) print 'stopped %s at %s' % (sender, now) print " t/r: %.6f" % tr del senders[sender] except KeyError: print 'invalid stop for %s' % sender elif len(raw_msg) == 3: topic = raw_msg[0] cnt += 1 try: h = cjson.decode(raw_msg[1]) msg = SimpleMessage.from_parts(h) doc = msg.raw_header doc[b'_id'] = doc.pop(b'id').hex doc[b'topic'] = topic doc[b'ts'] = datetime2int(doc[b'ts']) doc[b'received'] = datetime2int(now) doc[b'payload'] = raw_msg[2] msg_collection.insert(doc) except cjson.DecodeError, ex: print >>sys.stderr, 'Invalid json in: %r' % raw_msg[1] del raw_msg
## print ## sys.exit(0) # warm-up cpu for i in xrange(1000000): x = float(i) * 0.333 f = x / 1.1 payload = {'cnt': 1, 'd':datetime.date.today()} t0 = time.time() for n in xrange(COUNT): ## payload['cnt'] = n msg = SimpleMessage(type='test', parent=amsg, sender='Me', payload=payload) msg_parts = msg.parts m = SimpleMessage.from_parts(*msg_parts) t1 = time.time() td = t1 - t0 print "time: %.6f" % td print " r/s: %.2f" % (COUNT / td) tr = (td * 1000000) / COUNT print " ยต/r: %.3f" % tr print ## pprint(m.raw_header) ## pprint(m.raw_payload) ### Local Variables: ### mode: python ### End: