class rabbitmonitor(threading.Thread): def __init__(self): threading.Thread.__init__ (self) self.scheduler = sched.scheduler(time.time,time.sleep) self.cl = Client("localhost:55672","guest","guest") def rabbit_stats(self): rabbit_data={} try: exchanges = self.cl.get_exchanges() queues = self.cl.get_queues() binding = self.cl.get_bindings() rabbit_data['time'] = time.time() rabbit_data['exchanges'] = exchanges rabbit_data['queues'] = queues for q in rabbit_data['queues']: ## delete a tmp query with no consumer ## zombie queue if "amq" in q['name'] and q['consumers'] == 0: vhost = q['vhost'] self.cl.delete_queue(vhost,q['name']) print 'deleting queue' except: print 'error' pass; def run(self): while(1): self.scheduler.enter(400,1,self.rabbit_stats,()); self.scheduler.run()
def get_bindings(self): client = Client("localhost:15672", "guest", "guest") bindings = client.get_bindings() bindings_result = [] for b in bindings: if b["source"] == "exchange_baby_monitor": bindings_result.append(b) return bindings_result
async def monitor(request): #data loaded for the first time from the function call global refresh db = request.app['db'] await db.collection.drop() if refresh == 0: #Client creation try: client = Client('localhost:15672', 'guest', 'guest') except: return {"result":"Client not created"} #get all the bindings() try: bindings = client.get_bindings() n = len(bindings) except: return {"result":"binding error"} #final list of all the rows result_list = [] for i in range(n): #dict for storing values for each connection try: dict_each = {} vhost_name = bindings[i]['vhost'] dict_each['vhost_name'] = vhost_name dict_each['exchange_name'] = bindings[i]['source'] queue_name = bindings[i]['destination'] dict_each['queue_name'] = queue_name dict_each['queue_size'] = client.get_queue_depth(vhost=vhost_name, name=queue_name) result_list.append(dict_each) except: return {"result" : "data not found"} #insert data in the db try: await db.collection.insert_many(i for i in result_list) except: return {'result': "data not stored in the db"} refresh+=1 return {'result_list': result_list} #data retrieved from the database after refresh if refresh>0: result_list = [] async for document in db.collection.find(): result_list.append(document) return {"result_list" : result_list}
class rabbitmonitor(threading.Thread): def __init__(self): threading.Thread.__init__ (self) self.scheduler = sched.scheduler(time.time,time.sleep) self.cl = Client("localhost:55672","guest","guest") def rabbit_stats(self): rabbit_data={} try: exchanges = self.cl.get_exchanges() queues = self.cl.get_queues() binding = self.cl.get_bindings() rabbit_data['time'] = time.time() rabbit_data['exchanges'] = exchanges rabbit_data['queues'] = queues print rabbit_data except: pass; def run(self): while(1): self.scheduler.enter(2,1,self.rabbit_stats,()); self.scheduler.run()
class rabbitmonitor(threading.Thread): def __init__(self): threading.Thread.__init__(self) self.scheduler = sched.scheduler(time.time, time.sleep) self.cl = Client("localhost:55672", "guest", "guest") def rabbit_stats(self): rabbit_data = {} try: exchanges = self.cl.get_exchanges() queues = self.cl.get_queues() binding = self.cl.get_bindings() rabbit_data['time'] = time.time() rabbit_data['exchanges'] = exchanges rabbit_data['queues'] = queues print rabbit_data except: pass def run(self): while (1): self.scheduler.enter(2, 1, self.rabbit_stats, ()) self.scheduler.run()
def get_bindings(self): client = Client('localhost:15672', 'guest', 'guest') bindings = client.get_bindings() bindings = bindings[4:] return bindings