def do_POST(self): t = Timer() t.start() response = 200 result = {} try: content_length = int(self.headers.getheader('content-length')) req = json.loads(self.rfile.read(content_length)) print req req_type = req['type'] result = None if req_type == 'catalog': result = json.dumps(self.server.catalog) elif req_type == 'execute': task = req['args']['task'] json.dumps(BasicExecutor(self.server.cache, task).execute()) elif req_type == 'lookup': uuid = req['args']['uuid'] result = self.server.cache[uuid] if type(result) is pd.DataFrame: page_size = int(req['args']['page_size']) page_num = int(req['args']['page_num']) i = page_size * page_num j = i + page_size result = result[i:j] result = result.to_json() except: print traceback.format_exc() response = 500 result = '{}' t.stop() self.send_response(response) self.send_header('Content-type','application/json') self.end_headers() self.wfile.write(result) print 'Run Time:', t.time()
def do_POST(self): t = Timer() t.start() response = 200 result = {} try: content_length = int(self.headers.getheader('content-length')) req = json.loads(self.rfile.read(content_length)) print req req_type = req['type'] result = None if req_type == 'catalog': result = json.dumps(self.server.catalog) elif req_type == 'execute': task = req['args']['task'] json.dumps(BasicExecutor(self.server.cache, task).execute()) elif req_type == 'lookup': uuid = req['args']['uuid'] result = self.server.cache[uuid] if type(result) is pd.DataFrame: page_size = int(req['args']['page_size']) page_num = int(req['args']['page_num']) i = page_size * page_num j = i + page_size result = result[i:j] result = result.to_json() except: print traceback.format_exc() response = 500 result = '{}' t.stop() self.send_response(response) self.send_header('Content-type', 'application/json') self.end_headers() self.wfile.write(result) print 'Run Time:', t.time()
class Executor(Process): def __init__(self, catalog, results, task): Process.__init__(self) self.catalog = catalog self.results = results self.task = task self.timer = Timer() def get_result(self, uuid): result = self.results[uuid] while result.complete == 0.0: time.sleep(0.0005) result = self.results[uuid] return result def wait(self, uuid): while self.results[uuid].complete == 0.0: time.sleep(0.0005) def run(self): self.timer.start() try: if isinstance(self.task, ClassifyTask): self.classify() elif isinstance(self.task, CorrelateTask): self.correlate() elif isinstance(self.task, DifferenceTask): self.difference() elif isinstance(self.task, FeatureSelectTask): self.feature_select() elif isinstance(self.task, FrequentItemsetsTask): self.frequent_itemsets() elif isinstance(self.task, IntersectTask): self.intersect() elif isinstance(self.task, LoadTask): self.load() elif isinstance(self.task, MergeTask): self.merge() elif isinstance(self.task, ProjectTask): self.project() elif isinstance(self.task, SelectTask): self.select() elif isinstance(self.task, UnionTask): self.union() else: raise NotImplementedError() except Exception as e: print str(e) result = ErrorResult(self.task, str(e)) self.results[self.task.uuid] = result self.timer.stop() print 'task' + str(self.task.uuid) + ': ' + str( self.timer.time()) + 's' def classify(self): raise NotImplementedError() def correlate(self): raise NotImplementedError() def difference(self): raise NotImplementedError() def feature_select(self): raise NotImplementedError() def frequent_itemsets(self): raise NotImplementedError() def intersect(self): raise NotImplementedError() def load(self): raise NotImplementedError() def merge(self): raise NotImplementedError() def project(self): raise NotImplementedError() def select(self): raise NotImplementedError() def union(self): raise NotImplementedError()
class Executor(Process): def __init__(self, catalog, results, task): Process.__init__(self) self.catalog = catalog self.results = results self.task = task self.timer = Timer() def get_result(self, uuid): result = self.results[uuid] while result.complete == 0.0: time.sleep(0.0005) result = self.results[uuid] return result def wait(self, uuid): while self.results[uuid].complete == 0.0: time.sleep(0.0005) def run(self): self.timer.start() try: if isinstance(self.task, ClassifyTask): self.classify() elif isinstance(self.task, CorrelateTask): self.correlate() elif isinstance(self.task, DifferenceTask): self.difference() elif isinstance(self.task, FeatureSelectTask): self.feature_select() elif isinstance(self.task, FrequentItemsetsTask): self.frequent_itemsets() elif isinstance(self.task, IntersectTask): self.intersect() elif isinstance(self.task, LoadTask): self.load() elif isinstance(self.task, MergeTask): self.merge() elif isinstance(self.task, ProjectTask): self.project() elif isinstance(self.task, SelectTask): self.select() elif isinstance(self.task, UnionTask): self.union() else: raise NotImplementedError() except Exception as e: print str(e) result = ErrorResult(self.task, str(e)) self.results[self.task.uuid] = result self.timer.stop() print 'task' + str(self.task.uuid) + ': ' + str(self.timer.time()) + 's' def classify(self): raise NotImplementedError() def correlate(self): raise NotImplementedError() def difference(self): raise NotImplementedError() def feature_select(self): raise NotImplementedError() def frequent_itemsets(self): raise NotImplementedError() def intersect(self): raise NotImplementedError() def load(self): raise NotImplementedError() def merge(self): raise NotImplementedError() def project(self): raise NotImplementedError() def select(self): raise NotImplementedError() def union(self): raise NotImplementedError()