def monitor_task_status(api, task_ids, history, interval=15): _extract_info = lambda task: {u'status': task.status, u'statistic': task.statistic} while True: time_zero = time.time() try: history.append({_id: _extract_info(api.transform_tasks[_id]) for _id in task_ids}) time.sleep(max(0, interval - (time.time() - time_zero))) except (ConnectionError, Timeout) as e: print(u'WARNING! Communication error while monitoring tasks, details: {1}.'.format(e))
def monitor_unit_status(environment, history, interval=15): while True: time_zero = time.time() units = {} status = environment.status(fail=False) if status: services = status.get(u'services', {}) for service in services.itervalues(): units.update({k:v[u'agent-state'] for k,v in service['units'].iteritems()}) history.append(units) time.sleep(max(0, interval - (time.time() - time_zero)))