def execute(self, task, args=None): status = TaskStatus() status.id = 'LOCAL-' + task.id status.args = args if args is not None else task.args try: result = task.execute(args) status.code = TaskStatus.CODE_EXECUTION_SUCCESS status.message = "OK" status.result = result except Exception as e: status.code = TaskStatus.CODE_EXECUTION_FAILED status.message = str(e) return status
def handle(conn): # receiving task object request = conn.recv(1024) try: task = pickle.loads(request) status_code, status_message, task_id = TaskStatus.CODE_REQUEST_SUCCESS, 'OK', task.id except Exception as e: status_code, status_message, task_id = TaskStatus.CODE_REQUEST_FAILED, str( e), None # send status status = TaskStatus(status_code, status_message) status.id = task_id status.args = task.args try: conn.sendall(status.serialize()) except Exception as e: status_code, status_message, task_id = TaskStatus.CODE_REQUEST_FAILED, str( e), None # execute task if status_code == TaskStatus.CODE_REQUEST_SUCCESS: try: result_data = task.execute() status.code = TaskStatus.CODE_EXECUTION_SUCCESS status.result = result_data conn.sendall(status.serialize()) print(task_id, 'success') except Exception as e: try: status.code = TaskStatus.CODE_EXECUTION_FAILED status.message = str(e) conn.sendall(status.serialize()) except: pass conn.close()