def execute(self, task, args=None): # set arguments if args is not None: task.args = args # initialize status status = TaskStatus() status.host = self.host with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: # sending task request try: s.connect((self.host, self.port)) s.settimeout(1) status.id = task.id s.sendall(task.serialize()) data = s.recv(1024) s.settimeout(self.timeout) except Exception as e: status.code = TaskStatus.CODE_REQUEST_TIME_OUT status.message = str(e) return status temp = None try: status = pickle.loads(data) status.host = self.host status.id = task.id if status.code == TaskStatus.CODE_REQUEST_SUCCESS: data = s.recv(2048) temp = data status = pickle.loads(data) status.host = self.host status.id = task.id except Exception as e: status.code = TaskStatus.CODE_SERVER_ERROR status.message = str(e) try: s.close() except Exception as e: print(str(e)) return status