def query(): name = request.args.get('name','',type=str) if name == 'dispatcher': return jsonify(name=redis.get('dispatcher')) if name == 'nhit': start = request.args.get('start',type=parseiso) now = int(time.time()) p = redis.pipeline() for i in range(start,now): p.lrange('events/id:{0:d}:name:nhit'.format(i),0,-1) nhit = sum(p.execute(),[]) return jsonify(value=nhit) if name == 'tail_log': start = request.args.get('id',None,type=int) stop = int(redis.get('builder/global:next')) if start is None or start > stop: start = stop - 100 p = redis.pipeline() for i in range(start,stop): p.get('builder/id:%i:msg' % i) value = map(lambda x: x if x is not None else '',p.execute()) return jsonify(value=value,id=stop) if name == 'occupancy': now = int(time.time()) occ = [] p = redis.pipeline() for channel in CHANNELS: p.get('events/id:{0:d}:channel:{1:d}'.format(now//60-1,channel)) occ = p.execute() count = int(redis.get('events/id:{0:d}:count'.format(now//60-1))) occ = [int(n)/count if n else 0 for n in occ] return jsonify(values=occ) if name == 'l2_info': id = request.args.get('id',None,type=str) if id is not None: info = db_session.query(L2).filter(L2.id == id).one() else: # grab latest info = db_session.query(L2).order_by(L2.id.desc()).first() return jsonify(value=dict(info)) if name == 'nhit_l2': latest = Nhit.latest() hist = [getattr(latest,'nhit%i' % i) for i in range(30)] bins = range(5,300,10) result = dict(zip(bins,hist)) return jsonify(value=result) if name == 'pos': latest = Position.latest() hist = [getattr(latest,'pos%i' % i) for i in range(13)] bins = range(25,650,50) result = dict(zip(bins,hist)) return jsonify(value=result) if name == 'events': value = db_session.query(L2.entry_time, L2.events).order_by(L2.entry_time.desc())[:600] t, y = zip(*value) result = {'t': [x.isoformat() for x in t], 'y': y} return jsonify(value=result) if name == 'events_passed': value = db_session.query(L2.entry_time, L2.passed_events).order_by(L2.entry_time.desc())[:600] t, y = zip(*value) result = {'t': [x.isoformat() for x in t], 'y': y} return jsonify(value=result) if name == 'delta_t': value = db_session.query(L2).order_by(L2.entry_time.desc())[:600] result = {'t': [x.entry_time.isoformat() for x in value], 'y': [total_seconds(x.entry_time - x.get_clock()) for x in value]} return jsonify(value=result) if name == 'cmos' or name == 'base': p = redis.pipeline() for index in CHANNELS: p.get('%s/index:%i:value' % (name,index)) values = p.execute() return jsonify(value=values) if name == 'alarms': alarms = db_session.query(Alarms) return jsonify(messages=[dict(x) for x in alarms])
def get_clock(self): clock = db_session.query(Clock).filter(Clock.id == self.id).one() dt = datetime.timedelta(microseconds=clock.time10 / 10.0) return T_ZERO + dt